C#实现WebSocket通讯详细代码

it2025-05-01  8

第一步:在vs的NuGet里导入Fleck包,选择自己想要安装的项目安装

第二步

创建SocketService通讯控制类

namespace MeasureRobot.Service.Utils.FleckService { /// <summary> /// C# 实现WebSocket控制核心类 /// </summary> public class SocketService { public void Start() { FleckLog.Level = LogLevel.Debug; var allSockets = new List<IWebSocketConnection>(); var server = new WebSocketServer("ws://192.168.0.107:8088"); server.Start(socket => { socket.OnOpen = () => { Debug.WriteLine(DateTime.Now + " hello2,Open"); Console.WriteLine("Open!"); allSockets.Add(socket); }; socket.OnClose = () => { Debug.WriteLine(DateTime.Now + " hello2,Close"); Console.WriteLine("Close!"); allSockets.Remove(socket); }; socket.OnMessage = message => { Debug.WriteLine(DateTime.Now + " hello2,Close,Echo"); Console.WriteLine(message); allSockets.ToList().ForEach(s => s.Send("Echo: " + message)); }; }); var input = Console.ReadLine(); while (input != "exit") { foreach (var socket in allSockets.ToList()) { socket.Send(input); } input = Console.ReadLine(); } } } }

由于最后有个无限循环,所以不能使用接口去开启,这样接口没有返回数据

 

第三步

检测webSocket是否开启成功

在浏览器的控制台中输入

ws = new WebSocket("ws://192.168.0.107:8088");

ws.onopen = function() {      ws.send('websocekt测试');  };

这样就是成功了 

bug记录:

第一个bug:

首先出现:在其上下文中,该请求的地址无效。

这样的错误提醒,是因为

在var server = new WebSocketServer("ws://192.168.1.107:54945");

这行代码中,192.168.1.107:54945要改成自己电脑的ip

这样就解决问题了

第二个bug:

错误信息:以一种访问权限不允许的方式做了一个访问套接字的尝试。

这个是因为端口不能用被占用的端口

也不能使用项目运行的端口,

否则就会在出现这个错误

三 注意事项

 1,如果时webapi项目

  只需要在Global.asax.cs项目启动文件中调用,就会在项目启动时运行webSocket

2其他情况,

在使用前调用一下start方法,开启webSocket即可

 

最新回复(0)