如何在C#中从WebSocketWrapper的委托Action方法获取字符串与事件
如何使用WebSocketWrapper的OnMessage方法处理消息
嘿,别不好意思,新手刚接触委托和Action的时候都会有点懵,这太正常啦!我来给你拆解一下怎么用这个OnMessage方法获取WebSocket的消息。
首先得明白:这个OnMessage方法不是直接返回消息给你,而是让你注册一个「回调逻辑」——当WebSocketWrapper内部收到消息时,它会自动调用你注册的这个逻辑,把收到的字符串消息和WebSocket实例一起传给你。
方法一:用匿名方法快速实现
如果你的消息处理逻辑比较简单,直接用匿名方法就很方便:
// 先创建WebSocketWrapper的实例 var myWebSocket = new WebSocketWrapper(); // 调用OnMessage注册消息处理逻辑 myWebSocket.OnMessage((receivedMessage, socketInstance) => { // 这里写收到消息后要做的事 Console.WriteLine($"WebSocket收到消息:{receivedMessage}"); // 还能通过socketInstance操作这个WebSocket,比如回复消息 socketInstance.Send("我已经收到你的消息啦!"); });
方法二:用命名方法处理复杂逻辑
如果你的消息处理逻辑比较多,写个单独的命名方法会更清晰,注意方法的签名要和Action<string, WebSocketWrapper>完全匹配:
// 先定义一个处理消息的方法 private void ProcessWebSocketMessage(string message, WebSocketWrapper wrapper) { // 这里可以写复杂的处理逻辑,比如解析消息、更新UI等 Console.WriteLine("收到新消息:"); Console.WriteLine(message); // 示例:如果消息是"close",就关闭连接 if(message.Equals("close", StringComparison.OrdinalIgnoreCase)) { wrapper.Close(); } } // 然后在合适的地方注册这个方法 var myWebSocket = new WebSocketWrapper(); myWebSocket.OnMessage(ProcessWebSocketMessage);
原理简单说一下
WebSocketWrapper类里的_onMessage是一个私有委托字段,你调用OnMessage方法时,就是把自己写的逻辑赋值给这个字段。当WebSocket内部收到消息时,它会执行_onMessage?.Invoke(收到的消息, this);——这就触发了你注册的方法,把消息和当前的WebSocket实例传进来。
额外小提示
如果之后想取消这个消息监听,只要把null传给OnMessage就行:
myWebSocket.OnMessage(null);
内容的提问来源于stack exchange,提问作者buzzking
相关产品推荐
相关产品推荐

