<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无码乱码在线观看裸奔| 两性色午夜视频免费网| 亚洲精品自在在线观看| 国产午夜精品久久久久免费视 | 成人亚洲国产va天堂| 在线a级毛片免费视频| 久久久久精品国产亚洲AV无码| 最近高清中文字幕无吗免费看| 亚洲性线免费观看视频成熟| 毛片网站免费在线观看| 亚洲а∨精品天堂在线| 日韩亚洲国产综合久久久| 一级毛片大全免费播放| 久久亚洲高清观看| 亚洲黄色免费观看| 亚洲精品国产摄像头| 亚洲国产成人久久综合碰| 免费无码H肉动漫在线观看麻豆| 亚洲成AV人片在线观看无| 国产一卡2卡3卡4卡无卡免费视频| 亚洲av乱码一区二区三区| 日本免费高清一本视频| 韩日电影在线播放免费版| 亚洲色图古典武侠| 国产色爽女小说免费看| 中文字幕在线视频免费观看| 亚洲第一成年网站大全亚洲| 日本久久久免费高清| 国产成人无码区免费网站| 亚洲中文字幕无码一去台湾| 亚洲毛片av日韩av无码| 国产黄色免费网站| 午夜成人无码福利免费视频| 久久精品国产亚洲AV电影| yy6080久久亚洲精品|