麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > .NET > 正文

Asp.Net Core中WebSocket綁定的方法詳解

2024-07-10 13:32:49
字體:
來源:轉載
供稿:網(wǎng)友

說明

Websocket是html5后的產(chǎn)物,對于asp.net coreldraw/186176.html">core中也得到了支持,Asp.Net Core中WebScoket的操作使用基本上和Asp.net中相同,不同的是,綁定監(jiān)聽。

Asp.Net Core2.0默認已經(jīng)支持WebSocket,不需要另外安裝Nuget包。

通過對HttpContext中的WebSockets.AcceptWebSocketAsync方法,接受WebSocket請求;并返回WebScoket對象。

下面話不多說了,來一起看看詳細的介紹吧。

一、示例1,

1.后臺啟動文件Startup的configure中綁定WebSocket的路由監(jiān)聽

public void Configure(IApplicationBuilder app, IHostingEnvironment env, IServiceProvider svp) { ......  //綁定WebSocket  app.Map("/wsone/Connect", (con) =>  {   con.UseWebSockets();   WSHanleTwo _two = new WSHanleTwo();   con.Use(_two.Connect);  }); } 

2.定義請求處理類

using System.Net.WebSockets; using System.Threading; using System.Threading.Tasks; namespace Core_Razor_2 {  public class WSHanleTwo  {   private WebSocket socket = null;   //創(chuàng)建鏈接   public async Task Connect(HttpContext context, Func<Task> n)   {    try    {     //執(zhí)行接收     WebSocket socket = await context.WebSockets.AcceptWebSocketAsync();     this.socket = socket;     //執(zhí)行監(jiān)聽     await EchoLoop();    }    catch (Exception ex)    {     throw ex;    }   }   /// <summary>   /// 響應處理   /// </summary>   /// <returns></returns>   async Task EchoLoop()   {    var buffer = new byte[1024];    var seg = new ArraySegment<byte>(buffer);    while (this.socket.State == WebSocketState.Open)    {     var incoming = await this.socket.ReceiveAsync(seg, CancellationToken.None);     byte[] backInfo = System.Text.UTF8Encoding.Default.GetBytes("服務端相應內(nèi)容");     var outgoing = new ArraySegment<byte>(backInfo, 0, incoming.Count);     await this.socket.SendAsync(outgoing, WebSocketMessageType.Text, true, CancellationToken.None);    }   }  } } 

3.前臺請求代碼

var socket; //var uri = "ws://" + window.location.host + "/ws"; var uri = "ws://" + window.location.host + "@Url.Action("Connect")"; var output; var text = "test echo"; function write(s) {  var p = document.createElement("p");  p.innerHTML = s;  output.appendChild(p); } function doConnect() {  socket = new WebSocket(uri);  socket.onopen = function (e) { write("opened " + uri); doSend(); };  socket.onclose = function (e) { write("closed"); };  socket.onmessage = function (e) { write("Received: " + e.data); socket.close(); };  socket.onerror = function (e) { write("Error: " + e.data); }; } function doSend() {  write("Sending: " + text);  socket.send(text); } function onInit() {  output = document.getElementById("output");  doConnect(); } window.onload = onInit; 

二、為了簡單綁定,可以這樣封裝

public class SocketHandler {  public const int BufferSize = 4096;  WebSocket socket;  SocketHandler(WebSocket socket)  {   this.socket = socket;  }  async Task EchoLoop()  {   var buffer = new byte[BufferSize];   var seg = new ArraySegment<byte>(buffer);   while (this.socket.State == WebSocketState.Open)   {    var incoming = await this.socket.ReceiveAsync(seg, CancellationToken.None);    var outgoing = new ArraySegment<byte>(buffer, 0, incoming.Count);    await this.socket.SendAsync(outgoing, WebSocketMessageType.Text, true, CancellationToken.None);   }  }  static async Task Acceptor(HttpContext hc, Func<Task> n)  {   if (!hc.WebSockets.IsWebSocketRequest)    return;   var socket = await hc.WebSockets.AcceptWebSocketAsync();   var h = new SocketHandler(socket);   await h.EchoLoop();  }  /// <summary>  /// 路由綁定處理  /// </summary>  /// <param name="app"></param>  public static void Map(IApplicationBuilder app)  {   app.UseWebSockets();   app.Use(SocketHandler.Acceptor);  } } 

路由綁定:

[csharp] view plain copy//綁定websocket app.Map("/ws", SocketHandler.Map); 

 

總結

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VeVb武林網(wǎng)的支持。


注:相關教程知識閱讀請移步到ASP.NET教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 黄色毛片一级 | 欧美wwwwww| 在线播放污 | 久久久久久久一区二区 | 粉嫩粉嫩一区二区三区在线播放 | 热99re久久免费视精品频软件 | 日本成人在线免费 | 一本色道久久99精品综合蜜臀 | 欧美在线观看视频一区二区 | 天天色宗合 | 国产乱淫av | 国产成人在线观看网站 | 欧美wwwwww | 老a影视网站在线观看免费 国产精品久久久久久久久久尿 | 成年人免费视频播放 | 在线播放91 | 久久国产精品二区 | 日本免费不卡一区二区 | 原来神马影院手机版免费 | 成人午夜在线免费 | 久久sp| 12av电影| av色哟哟 | 福利在线免费 | 久久逼逼 | 欧美在线观看视频一区二区 | 国产分类视频 | 亚洲成人欧美在线 | 久久久久免费电影 | 亚洲一二区精品 | 美女扒开腿让男生桶爽网站 | 国产一级在线观看视频 | 久久久久久久久免费 | 欧美日本免费一区二区三区 | 久久露脸国语精品国产91 | 99综合视频 | 国产一级桃视频播放 | 污片视频在线观看 | 92看片淫黄大片欧美看国产片 | 欧美成人黄色 | 久久久久久久久国产 |