我可以连接到我的socketio服务器,但是如何发送带有params的请求?
我的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#调用此事件时才有问题。我做错了什么?
答案 0 :(得分:2)
问题在于socket.io
不是普通的websocket,而是在websocket之上的自定义协议(或者在HTTP长轮询之上作为回退和初始化)。这意味着要与socket.io服务器说话,你必须像socket.io那样编码你的数据和消息。 Here似乎是关于它是如何工作的一些文档。
备选方案:
socket.io
库 - 但我不知道是否存在答案 1 :(得分:2)
C#有socketio库,但我有一些问题,我找不到答案,根本没有支持。所以我切换到websocket-sharp。
从socketio服务器调查信息的一些研究我找到了答案。如果我发送此字符串一切正常
x
只需在json之前添加42,一切都会正常工作。魔法。 我认为这个42号码就像你当前的连接状态或类似的东西。因为当你刚刚连接到socketio服务器时,它会在json之前发送带有0的字符串。