<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

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

        來源:懂視網 責編:小采 時間:2020-11-27 22:35:13
        文檔

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

        Asp.Net Core中WebSocket綁定的方法詳解:說明 Websocket是html5后的產物,對于asp.net core中也得到了支持,Asp.Net Core中WebScoket的操作使用基本上和Asp.net中相同,不同的是,綁定監聽。 Asp.Net Core2.0默認已經支持WebSocket,不需要另外安裝Nuget包。 通過對HttpCo
        推薦度:
        導讀Asp.Net Core中WebSocket綁定的方法詳解:說明 Websocket是html5后的產物,對于asp.net core中也得到了支持,Asp.Net Core中WebScoket的操作使用基本上和Asp.net中相同,不同的是,綁定監聽。 Asp.Net Core2.0默認已經支持WebSocket,不需要另外安裝Nuget包。 通過對HttpCo

        說明

        Websocket是html5后的產物,對于asp.net core中也得到了支持,Asp.Net Core中WebScoket的操作使用基本上和Asp.net中相同,不同的是,綁定監聽。

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

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

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

        一、示例1,

        1.后臺啟動文件Startup的configure中綁定WebSocket的路由監聽

        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; 
         //創建鏈接 
         public async Task Connect(HttpContext context, Func<Task> n) 
         { 
         try 
         { 
         //執行接收 
         WebSocket socket = await context.WebSockets.AcceptWebSocketAsync(); 
         this.socket = socket; 
         //執行監聽 
         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("服務端相應內容"); 
         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); 

        Asp.Net Core上傳控件:http://xiazai.jb51.net/201712/yuanma/Uploader(jb51.net).rar

        總結

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

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

        Asp.Net Core中WebSocket綁定的方法詳解:說明 Websocket是html5后的產物,對于asp.net core中也得到了支持,Asp.Net Core中WebScoket的操作使用基本上和Asp.net中相同,不同的是,綁定監聽。 Asp.Net Core2.0默認已經支持WebSocket,不需要另外安裝Nuget包。 通過對HttpCo
        推薦度:
        標簽: 綁定 net netcore
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 国产成+人+综合+亚洲专| 久久久久亚洲AV片无码下载蜜桃| 亚洲成a人片在线观看精品| 182tv免费观看在线视频| 亚洲色偷偷偷网站色偷一区| 99热在线免费观看| 亚洲成a人不卡在线观看| 成人黄色免费网址| 在线综合亚洲欧洲综合网站| 大陆一级毛片免费视频观看| 国产精品亚洲lv粉色| 亚洲人成色7777在线观看不卡| 又粗又长又爽又长黄免费视频| 日本免费A级毛一片| 一级毛片a免费播放王色| 亚洲第一成人影院| 男女一边摸一边做爽的免费视频| 久久亚洲国产精品五月天| 69av免费观看| 亚洲熟妇无码av另类vr影视| 日韩毛片无码永久免费看| 黄色网址大全免费| 亚洲熟妇丰满多毛XXXX| 3d成人免费动漫在线观看| 亚洲国产模特在线播放| 国产在线观看免费不卡 | 国产色爽女小说免费看| 免费福利在线观看| 亚洲va在线va天堂va四虎 | 18禁美女黄网站色大片免费观看 | 亚洲国产综合在线| 91青青国产在线观看免费| 亚洲国产AV一区二区三区四区| 在线免费观看韩国a视频| aaa毛片视频免费观看| 亚洲成aⅴ人片在线影院八| 国产一区视频在线免费观看 | 亚洲第一第二第三第四第五第六| 亚洲精品线路一在线观看| 毛片无码免费无码播放 | 在线看无码的免费网站|