2017-01-29 3 views
0

ich kann mich mit meinem socketio server verbinden, aber wie kann ich ein requst mit params schicken?websocket-sharp wie man mit socketio server arbeitet und "emit" anfrage sendet

Mein socketio Server hört Ereignis

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

auf Client-Seite tryed ich diesen

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

zu tun, damit ich json zu Server [ "init" senden, { "type":“ s "," key ":" 1 "," room ":" eq "}]

Aber Server reagiert nicht auf dieses Paket. Server funktioniert gut, ich habe nur Probleme mit dem Aufruf dieses Ereignisses bei C#. Was ich falsch mache?

Antwort

1

C# socketio Bibliothek hat aber Ich habe einige Probleme, auf die ich keine Antworten finden kann und es gibt überhaupt keine Unterstützung. Also bin ich auf Websocket scharf geworden.

Nach einiger Suche von Debug-Informationen von Socket-Server fand ich die Antwort. Wenn ich diese Zeichenfolge sende alle funktioniert gut

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

Fügen Sie einfach 42 vor json und alles wird gut funktionieren. Zauber. Ich denke diese 42 Nummer ist wie Ihr aktueller Verbindungsstatus oder so ähnlich. Denn wenn Sie nur eine Verbindung zu socketio Server herstellen, wird die Zeichenfolge mit 0 vor json gesendet.

2

Das Problem ist, dass socket.io ist nicht einfach websocket, sondern ein benutzerdefiniertes Protokoll oben auf websocket (oder auch auf HTTP lange Abfragen als Fallback und bei der Initialisierung). Das heißt, mit einem socket.io Server zu sprechen, müssen Sie Ihre Daten und Nachrichten genau wie socket.io codieren. Here scheint eine Dokumentation darüber zu sein, wie es funktioniert.

Alternativen:

  • eine socket.io Bibliothek auf Client-Seite verwenden - aber ich weiß nicht, ob man
  • Arbeit mit rohem WebSockets auf Server-Seite existiert