websocket-sharp 如何使用 socketio 服务器并发送 "emit" 请求
websocket-sharp how to work with socketio server and send "emit" request
我可以连接到我的 socketio 服务器,但是我如何发送带有参数的请求?
我的socketio服务器监听事件
socket.on('init', ( data ) => {
console.log('init', data);
});
在客户端我尝试这样做
_socket.OnMessage += (sender, e) =>
{
Console.WriteLine("message: {0} {1}", e.IsBinary, e.Data);
_socket.Send(MakePacket("init", new Init
{
key = "1",
room = "eq",
type = "s"
}.ToJson())
);
};
private string MakePacket(string e, string data)
{
return new[] {e, data}.ToJson();
}
所以我发送 json 到服务器
["init", {"type":"s","key":"1","room":"eq"}]
但是服务器不会对此数据包做出反应。服务器工作正常,我只有在 C# 中调用此事件时遇到问题。我做错了什么?
问题是 socket.io
不是普通的 websocket,而是 websocket 之上的自定义协议(或者在 HTTP 长轮询之上作为后备和初始化)。这意味着要与 socket.io 服务器通话,您必须像 socket.io 那样对您的数据和消息进行编码。 Here 似乎是一些关于它如何工作的文档。
备选方案:
- 在客户端使用
socket.io
库 - 但我不知道是否存在
- 在服务器端使用原始 websockets
C# 有 socketio 库,但我有一些问题找不到答案,而且根本没有支持。所以我切换到 websocket-sharp.
在对来自 socketio 服务器的调试信息进行一些研究后,我找到了答案。如果我发送这个字符串一切正常
42["init", {"type":"s","key":"1","room":"eq"}]
只要在json前加上42就可以了。魔法。
我认为这个 42 数字就像您当前的连接状态或类似的东西。因为当你刚刚连接到 socketio 服务器时,它会在 json.
之前发送带有 0 的字符串
我可以连接到我的 socketio 服务器,但是我如何发送带有参数的请求?
我的socketio服务器监听事件
socket.on('init', ( data ) => {
console.log('init', data);
});
在客户端我尝试这样做
_socket.OnMessage += (sender, e) =>
{
Console.WriteLine("message: {0} {1}", e.IsBinary, e.Data);
_socket.Send(MakePacket("init", new Init
{
key = "1",
room = "eq",
type = "s"
}.ToJson())
);
};
private string MakePacket(string e, string data)
{
return new[] {e, data}.ToJson();
}
所以我发送 json 到服务器 ["init", {"type":"s","key":"1","room":"eq"}]
但是服务器不会对此数据包做出反应。服务器工作正常,我只有在 C# 中调用此事件时遇到问题。我做错了什么?
问题是 socket.io
不是普通的 websocket,而是 websocket 之上的自定义协议(或者在 HTTP 长轮询之上作为后备和初始化)。这意味着要与 socket.io 服务器通话,您必须像 socket.io 那样对您的数据和消息进行编码。 Here 似乎是一些关于它如何工作的文档。
备选方案:
- 在客户端使用
socket.io
库 - 但我不知道是否存在 - 在服务器端使用原始 websockets
C# 有 socketio 库,但我有一些问题找不到答案,而且根本没有支持。所以我切换到 websocket-sharp.
在对来自 socketio 服务器的调试信息进行一些研究后,我找到了答案。如果我发送这个字符串一切正常
42["init", {"type":"s","key":"1","room":"eq"}]
只要在json前加上42就可以了。魔法。 我认为这个 42 数字就像您当前的连接状态或类似的东西。因为当你刚刚连接到 socketio 服务器时,它会在 json.
之前发送带有 0 的字符串