You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:11:51