2017-01-29 9 views
0

私のsocketioサーバーに接続できますが、どのようにしてparamsでrequstを送信できますか?websocket-sharp socketioサーバーと連携して "emit"リクエストを送信する方法

マイsocketioサーバは、クライアント側のイベント

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

を聞く私はので、私は、サーバー にJSONを送るにこの

_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(); 
} 

を行うには、[ "INIT"、{ "タイプ" をしようと試みました:」 "キー": "1"、 "部屋": "eq"}]

しかし、サーバーはこのパケットで反応しません。サーバーはうまく動作し、私はこのイベントをC#で呼び出すだけで問題があります。私は間違っていますか?

答えて

1

C#はsocketioライブラリを持っていますが、存在する場合、私は知りません私はいくつかの問題を抱えています。答えが見つからず、サポートが全くありません。だから、私はwebsocket-sharpに切り替えました。

私は答えを見つけたsocketioサーバーからデバッグ情報のいくつかのreseach。この文字列を送信すると、すべて正常に動作します。

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ライブラリを使用する - が、1つは
  • サーバー側の生のWebSocketを持つ作業
関連する問題