赞
踩
nuget包直接搜索fleck
在webapi里直接写
- public Task<string> customerwebsocket(string code)
- {
- Guid guid = System.Guid.NewGuid();
- var allSockets = new List<IWebSocketConnection>();
- var server = new WebSocketServer("ws://127.0.0.1:6001");
- server.Start(socket =>
- {
- socket.OnOpen = () =>
- {
- //连接成功
- //添加连接人
- allSockets.Add(socket);
- //连接成功
- };
- socket.OnMessage = message =>
- {
- //接受消息
- //所有连接发消息
- allSockets.ToList().ForEach(s => s.Send("客户端 Echo: " + message));
- };
- socket.OnClose = () =>
- {
- //断开连接
- };
- //关闭连接
- socket.Close();
- });
- return Task.FromResult("ws://127.0.0.1:6001");
- }
侦听错误后自动重启
设置为RestartAfterListenError
trueWebSocketConnection
设置为RestartAfterListenError
true
WebSocketConnection
server.RestartAfterListenError = true;
- 启用安全连接需要两件事:改用方案 的 ,并将 Fleck 指向一个 x509 证书,该证书包含一个 public 和 私钥wssws
- var server = new WebSocketServer("wss://0.0.0.0:8431");
- server.Certificate = new X509Certificate2("MyCert.pfx");
- server.Start(socket =>
- {
- //...use as normal
- });
- 制作证书时遇到问题?请参阅本指南https://github.com/statianzo/Fleck/issues/214#issuecomment-364413879
- //定义全局字典
- private Dictionary<string, IWebSocketConnection> socketCache = new Dictionary<string, IWebSocketConnection>();
-
- //在socket.OnMessage接收到消息后向外发送
- //messages["code"].ToString()为回传的接收人id
- //Dictionary<string, IWebSocketConnection> string类型为自定义的GUID
- //IWebSocketConnection 为 socket方法
-
-
- socketCache.Where(a => a.Key == messages["code"].ToString()).ToList().ForEach(a => a.Value.Send(connectionInfo.Id.ToString() + "消息" + messages["busiessesID"].ToString()));
H5端接收
以下是 WebSocket 对象的属性。假定我们使用了以上代码创建了 Socket 对象:
属性 | 描述 |
---|---|
Socket.readyState | 只读属性 readyState 表示连接状态,可以是以下值:
|
Socket.bufferedAmount | 只读属性 bufferedAmount 已被 send() 放入正在队列中等待传输,但是还没有发出的 UTF-8 文本字节数。 |
以下是 WebSocket 对象的相关事件。假定我们使用了以上代码创建了 Socket 对象:
事件 | 事件处理程序 | 描述 |
---|---|---|
open | Socket.onopen | 连接建立时触发 |
message | Socket.onmessage | 客户端接收服务端数据时触发 |
error | Socket.onerror | 通信发生错误时触发 |
close | Socket.onclose | 连接关闭时触发 |
以下是 WebSocket 对象的相关方法。假定我们使用了以上代码创建了 Socket 对象:
方法 | 描述 |
---|---|
Socket.send() | 使用连接发送数据 |
Socket.close() | 关闭连接 |
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="utf-8" />
- <title></title>
- </head>
- <body>
- <div>消息</div>
- </body>
- <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.js"></script>
- <script>
- $.ajax({
- type: "post",
- url:"http://localhost:8000/api/app/busiesses-login/websockets",
- data:{
- "code":"123"
- },
- success:function(res){
- const url = res.data
- console.log(url)
- var sock = new WebSocket(url);//此时的值:ws://127.0.0.1:6001
- sock.onopen = function(e){
- //连接成功
- console.log(e)
- }
- sock.onmessage = function (e) {
- //接收消息
- console.log(e.data)
- };
- sock.onclose = function(e){
- //关闭
- console.log(e)
- }
- //每隔两秒发送一次消息
- setInterval(()=>{
- sock.send("123")
- },2000)
-
-
- }
- })
-
- </script>
- </html>
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。