写点什么

.NET 6 SignalR websocket 入门(一)

作者:辣么大
  • 2022 年 8 月 18 日
    广东
  • 本文字数:1359 字

    阅读完需:约 4 分钟

.NET 6 SignalR websocket 入门(一)

WebSocket

为什么要有 WebSocket

HTTP:是一个用于传输超媒体文档(如 HTML)的应用层的无连接、无状态协议。


HTTP 缺陷:单向,只能由客户端发起。客户端想知道状态的变化只能发起轮询,效率低,且浪费资源。


WebSocket:HTML5 开始提供的一种浏览器与服务器进行全双工通讯的网络技术,属于应用层协议,基于 TCP 传输协议,并复用 HTTP 的握手通道。最大的特点是全双工通讯:服务器可以主动向客户推送消息,客户也可以主动向服务器发送消息。


WebSocket 属性

Socket.readyState

0 - 表示连接尚未建立。

1 - 表示连接已建立,可以进行通信。

2 - 表示连接正在进行关闭。

3 - 表示连接已经关闭或者连接不能打开

WebSocket 事件

  • open Socket.onopen 连接建立时触发

  • message Socket.onmessage 客户端接收服务端数据时触发

  • error Socket.onerror 通信发生错误时触发

  • close Socket.onclose 连接关闭时触发

WebSocket 方法

Socket.send():使用连接发送数据


Socket.close():关闭连接

实验

1、编写 html 文件


<!DOCTYPE HTML><html>   <head>   <meta charset="utf-8">   <title>菜鸟教程(runoob.com)</title>       <script type="text/javascript">         function WebSocketTest()         {            if ("WebSocket" in window)            {               alert("您的浏览器支持 WebSocket!");               // 打开一个 web socket               var ws = new WebSocket("ws://localhost:9998/echo");               ws.onopen = function()               {                  // Web Socket 已连接上,使用 send() 方法发送数据                  ws.send("发送数据");                  alert("数据发送中...");               };               ws.onmessage = function (evt)                {                   var received_msg = evt.data;                  alert("数据已接收...");               };               ws.onclose = function()               {                   // 关闭 websocket                  alert("连接已关闭...");                };            }            else            {               // 浏览器不支持 WebSocket               alert("您的浏览器不支持 WebSocket!");            }         }      </script>     </head>   <body>      <div id="sse">         <a href="javascript:WebSocketTest()">运行 WebSocket</a>      </div>         </body></html>
复制代码


2、 安装 pywebsocket


地址:https://github.com/GoogleChromeLabs/pywebsocket3


安装后,执行命令:python standalone.py -p 9998 -w /Users/gdhu/onedrive/projects/myknowledgebase/docs/csharp/dotnet/02_websocket/pywebsocket3/example


浏览器打开:file:///Users/gdhu/onedrive/projects/myknowledgebase/docs/csharp/dotnet/02_websocket/example/ws.html



参考链接:

  • https://www.runoob.com/html/html5-websocket.html

  • http://websocketd.com/ :is a small command-line tool that will wrap an existing command-line interface program, and allow it to be accessed via a WebSocket.


系列文章:

1、 ASP.NET Core SignalR 概述 https://xie.infoq.cn/article/89cd8a66d563dcac394271985

用户头像

辣么大

关注

https://github.com/gdhucoder 2019.01.31 加入

公子,你再不吃这药丸💊,你就要完呐!

评论

发布
暂无评论
.NET 6 SignalR websocket 入门(一)_.net_辣么大_InfoQ写作社区