国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

基于asp.netCoreWebApi的webSocket通信示例(net6)

這篇具有很好參考價值的文章主要介紹了基于asp.netCoreWebApi的webSocket通信示例(net6)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

背景:

? ? 在阿里云服務(wù)器中搭建了常規(guī)的tcp server服務(wù)(基于.net framework 4.0)。用以實現(xiàn)遠(yuǎn)程控制家里的魚缸燈,辦公室的電腦開關(guān)機(jī)等功能??蛻舳瞬捎肞C桌面端和微信小程序端。

? ? 服務(wù)端:tcp server(基于.net framework 4.0)

? ? 客戶端:PC桌面端軟件(.net winform)、微信小程序

基于asp.netCoreWebApi的webSocket通信示例(net6)

? ??問題:

? ?微信小程序端支持websocket通信而且必須是wss(wss表示在TLS之上的websocket,相當(dāng)于https),無法與tcp server直接通信。

? ? 為什么不重新開發(fā)服務(wù)端呢?

? ? 一是我懶。

? ? 二是服務(wù)端TCP Server必須時刻保持與家里的魚缸燈控制器,辦公室的開關(guān)機(jī)控制器等設(shè)備的網(wǎng)絡(luò)連接。而且還設(shè)定了定時執(zhí)行的策略,故不適宜更換其他技術(shù)實現(xiàn)。

? ?解決方法:

? ?微信小程序的后端采用了asp.net web api (net6)搭建的接口服務(wù)。如果可以在該web api 接口服務(wù)中搭建websocket服務(wù),中轉(zhuǎn)微信小程序和tcp server服務(wù)端,同時升級TCP Server,使之同時支持tcp client連接和websocket連接,問題可得到解決。

基于asp.netCoreWebApi的webSocket通信示例(net6)

?

開干!

? ? 一、新建ASP.NET Core Web API? 項目(net6)

基于asp.netCoreWebApi的webSocket通信示例(net6)

????基于net 6.0

基于asp.netCoreWebApi的webSocket通信示例(net6)

? ? 二、創(chuàng)建websocket中間件WebsocketHandler

? ? 新建類,名為:WebsocketHandler

? ? 在接收到websocket連接時,將觸發(fā)Invoke函數(shù)。

? ? 關(guān)鍵代碼:????

 WebSocket webSocket = await context.WebSockets.AcceptWebSocketAsync();
                    _logger.LogInformation($"接收到websocket連接.");
                    try
                    {
                        WebSocketReceiveResult result;
                        do
                        {
                            var buffer = new byte[1024 * 1];
                            result = await webSocket.ReceiveAsync(new ArraySegment<byte>(buffer), CancellationToken.None);
                            if (result.MessageType == WebSocketMessageType.Text && !result.CloseStatus.HasValue)
                            {
                                var msgString = Encoding.UTF8.GetString(buffer);
                                _logger.LogInformation($"接收到數(shù)據(jù):{msgString}.");

                                //發(fā)送接收到的信息
                                await webSocket.SendAsync(new ArraySegment<byte>(buffer, 0, buffer.Length), WebSocketMessageType.Text, true, CancellationToken.None);
                            }
                        }
                        while (!result.CloseStatus.HasValue);
                    }
                    catch (Exception ex)
                    {
                        
                    }

? ??AcceptWebSocketAsync函數(shù)接收websocket連接,并把連接保存于變量webSocket。

? ? 定義變量WebSocketReceiveResult result用來接收客戶端發(fā)送的數(shù)據(jù),webSocket.ReceiveAsync函數(shù)接收數(shù)據(jù)。

????webSocket.SendAsync函數(shù)實現(xiàn)向客戶端發(fā)送數(shù)據(jù)的功能。

? ? 可以看到,為了測試發(fā)送和接收的功能,服務(wù)端將接收到的數(shù)據(jù)直接返回給客戶端

? ? 三、添加中間件

? ??在Program中添加此中間件:

app.UseWebSockets();
app.UseMiddleware<WebsocketHandler>();

????至此,服務(wù)端已建好。

? ??四、運行服務(wù)端

? ? Ctrl+F5,運行服務(wù)端,可看到,監(jiān)聽端口為:5276????

基于asp.netCoreWebApi的webSocket通信示例(net6)

? ? 五、創(chuàng)建客戶端:測試.html

? ? 創(chuàng)建靜態(tài)頁面:webSocketClient.html,作為客戶端,該客戶端將實現(xiàn)向服務(wù)端發(fā)送消息,并接收服務(wù)端的消息。

? ? 使用原生javascript實現(xiàn),不依賴其他js庫。

? ? 關(guān)鍵函數(shù):

????創(chuàng)建websocket:new WebSocket(server + '/ws');

? ? websocket打開成功事件:WEB_SOCKET.onopen

? ? websocket接收消息事件:WEB_SOCKET.onmessage

? ? websocket關(guān)閉事件:WEB_SOCKET.onclose

????

<button type="button" onclick="javascript:connectWebSocket()">測試</button>
? ? 界面上放置一個按鈕,觸發(fā)websocket。

? ? 六、測試成功

? ? 雙擊在瀏覽器中打開webSocketClient.html,同時按F12打開調(diào)試器。點擊“測試”按鈕,觀察控制臺面板,可看到websocket接收到來自服務(wù)器的消息“hello world”

????

基于asp.netCoreWebApi的webSocket通信示例(net6)

? ??而服務(wù)端面板:顯示接收到websocket連接并接收到消息“hello world"

????

基于asp.netCoreWebApi的webSocket通信示例(net6)

????

基于asp.netCoreWebApi的webSocket通信示例(net6)

我已將代碼上傳,下載碼是:C67F979907

????下載碼是啥?如何下載=》點擊查看文章來源地址http://www.zghlxwxcb.cn/news/detail-421810.html

到了這里,關(guān)于基于asp.netCoreWebApi的webSocket通信示例(net6)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 基于.net6的WPF程序使用SignalR進(jìn)行通信

    基于.net6的WPF程序使用SignalR進(jìn)行通信

    之前寫的SignalR通信,是基于.net6api,BS和CS進(jìn)行通信的。 .net6API使用SignalR+vue3聊天+WPF聊天_signalr wpf_故里2130的博客-CSDN博客 今天寫一篇關(guān)于CS客戶端的SignalR通信,后臺服務(wù)使用.net6api?。其實和之前寫的差不多,主要在于服務(wù)端以后臺進(jìn)程的方式存在,而客戶端以exe方式存在,

    2024年02月16日
    瀏覽(26)
  • .NET6 項目使用RabbitMQ實現(xiàn)基于事件總線EventBus通信

    .NET6 項目使用RabbitMQ實現(xiàn)基于事件總線EventBus通信

    一、概念及介紹 ????????通常通過使用事件總線實現(xiàn)來執(zhí)行此發(fā)布/訂閱系統(tǒng)。 事件總線可以設(shè)計為包含 API 的接口,該 API 是訂閱和取消訂閱事件和發(fā)布事件所需的。 它還可以包含一個或多個基于跨進(jìn)程或消息通信的實現(xiàn),例如支持異步通信和發(fā)布/訂閱模型的消息隊列或

    2024年04月28日
    瀏覽(26)
  • ASP.NET Core NET6 EFCore MySQL

    ASP.NET Core 下使用 EFCore 和 .NET Framework 下使用有點區(qū)別。 參考官方文檔:https://dev.mysql.com/doc/connector-net/en/connector-net-entityframework-core.html 1.創(chuàng)建 ASP.NET Core Web應(yīng)用 項目 創(chuàng)建新的項目的 Program.cs 文件中使用了頂級語句,與NET5 有所區(qū)別。 .NET 6 的 創(chuàng)建的項目使用了C# 頂級語句 ht

    2024年02月07日
    瀏覽(54)
  • asp.net core 一種基于token 和 Permission 的權(quán)限管理中間件示例

    asp.net core 一種基于token 和 Permission 的權(quán)限管理中間件示例

    asp.net core webapi 下面,想做一個過濾權(quán)限的Filter,配合token,對api做一個較為細(xì)粒度的權(quán)限控制, 該filter (PermissionFilter) 的作用是用戶LoginUser.Permissions 列表中有 Key指定的權(quán)限才可以訪問,沒有則返回403 錯誤碼。 ? 1. 先上封裝后的使用效果 說明:要求登錄即可,不要求特定權(quán)限

    2024年02月05日
    瀏覽(22)
  • ASP.NET基于TCP協(xié)議的簡單即時通信軟件的設(shè)計與實現(xiàn)(源代碼+論文)

    即時通 信 ( I nstant M essage), 由于其具有 實時性、跨平臺性、成本低、效率高等優(yōu)點 而受到廣泛的使用。設(shè)計并實現(xiàn) 一個能夠處理 多用 戶進(jìn)行實時、安全的即時通 信系統(tǒng) 具有較強(qiáng)的現(xiàn)實意義。即時 通信 的底層 通信是 通過SOCKE T套接 字接口實現(xiàn) 的 。當(dāng)前的主流UNIX系統(tǒng)和

    2024年02月09日
    瀏覽(60)
  • .net6中WPF的串口通信和USB通信

    .net6中WPF的串口通信和USB通信

    之前寫過串口通信,不過是winform的。 c#使用串口進(jìn)行通信_c# 串口通信_故里2130的博客-CSDN博客 今天說一下,.net6中wpf的串口通信和USB通信,在工控行業(yè)中,這2種的方式非常多,還有網(wǎng)口通信,它們都是用來和硬件打交道的,進(jìn)行交互信息。 一、串口通信 1.安裝System.IO.Ports

    2024年02月16日
    瀏覽(31)
  • .Net6使用SignalR實現(xiàn)前后端實時通信

    .Net6使用SignalR實現(xiàn)前后端實時通信

    后端代碼 (Asp.net core web api,用的.net6) Program.cs 代碼運行邏輯: ?1. 通過 WebApplication.CreateBuilder(args) 創(chuàng)建一個 ASP.NET Core 應(yīng)用程序建造器。 2. 使用 builder.Services.AddControllers() 添加 MVC 控制器服務(wù)和 builder.Services.AddSignalR() 添加 SignalR 服務(wù)。 3. 注冊 Swagger 和 Cors 跨域設(shè)置的服務(wù)

    2024年02月01日
    瀏覽(22)
  • asp.net與asp.net優(yōu)缺點及示例

    Asp.net Mvc架構(gòu)模式是一種低耦合、可測試的web應(yīng)用程序框架,它是基于CLR和成熟的MVC架構(gòu)構(gòu)建的。ASP .NET MVC不支持 ViewState和服務(wù)器控件。 Asp.net優(yōu)點: 1.架構(gòu)降低了程序間的耦合性,M VC,分層,目標(biāo)明確 2.性能不支持viewstate,完成html, 已于結(jié)合jquery使用, 提供程序性能 3.支持并

    2024年02月15日
    瀏覽(18)
  • C# Asp.Net6 MVC,Log4net NLog 日志插件應(yīng)用 及Windows、Liux環(huán)境下程序發(fā)布

    C# Asp.Net6 MVC,Log4net NLog 日志插件應(yīng)用 及Windows、Liux環(huán)境下程序發(fā)布

    connected Services 服務(wù)依賴(第三方) Properties 文件下 launchSettings.json 項目啟動配置文件 wwwroad 存放靜態(tài)文件 依賴項 管理Nuget程序包 appsettings.json 配置文件 C 業(yè)務(wù)邏輯運算–調(diào)用其他的服務(wù)做業(yè)務(wù)邏輯 M 實體對象,保存數(shù)據(jù),數(shù)據(jù)傳輸 V 視圖,表現(xiàn)層 第一步:尋找log4net 程序包

    2024年02月14日
    瀏覽(18)
  • 關(guān)于ASP.NET Core WebSocket實現(xiàn)集群的思考

    關(guān)于ASP.NET Core WebSocket實現(xiàn)集群的思考

    前言 ????提到 WebSocket 相信大家都聽說過,它的初衷是為了解決客戶端瀏覽器與服務(wù)端進(jìn)行雙向通信,是在單個 TCP 連接上進(jìn)行全雙工通訊的協(xié)議。在沒有WebSocket之前只能通過瀏覽器到服務(wù)端的請求應(yīng)答模式比如輪詢,來實現(xiàn)服務(wù)端的變更響應(yīng)到客戶端,現(xiàn)在服務(wù)端也可以主

    2024年04月14日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包