2017-01-29 47 views
0

我可以连接到我的socketio服务器,但是如何使用params发送请求?websocket-sharp如何与socketio服务器一起工作并发送“发出”请求

我socketio服务器侦听事件

socket.on('init', (data) => { 
    console.log('init', data); 
}); 

在客户端我tryed做这个

_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发送到服务器 [ “初始化”,{ “类型”:” s“,”key“:”1“,”room“:”eq“}]

但服务器不会对此数据包做出反应。服务器工作正常,我只有在C#调用此事件的问题。我做错了什么?

回答

1

C#有socketio库,但我有一些问题,我无法找到答案,根本没有支持。所以我转向websocket-sharp。

从socketio服务器调试信息的一些研究我找到了答案。如果我发送这个字符串都可以正常工作

42["init", {"type":"s","key":"1","room":"eq"}] 

只需在json之前添加42并且所有的都可以正常工作。魔法。 我认为这个42号码就像你当前的连接状态或类似的东西。因为当你连接到socketio服务器时,它会在json之前发送字符串0。

2

问题是socket.io不是纯websocket,而是websocket之上的一个自定义协议(或者在HTTP长轮询之上作为后备和初始化)。这意味着要与socket.io服务器交谈,您必须像socket.io那样对数据和消息进行编码。 Here似乎是关于它如何工作的一些文档。

替代方案:

  • 使用在客户端一个socket.io库 - 但我不知道是否存在一个
  • 在服务器端使用原始的WebSockets工作