2016-07-18 11 views
-1

Ich habe eine Aufgabe, Javascript Realtime App zu erstellen. Serverseite ist fertig (wss: //), ich muss clientseitig anlegen.JavaScript Anfrage Verbindung mit Daten

Die Hauptaufgaben Ich habe Probleme mit:

Der Client den Server Ihre Verbindung zu überprüfen, pingen können. Client führt einen Ping durch, einschließlich der Sequenznummer (die es ermöglicht, die genaue Ping-Dauer zu verfolgen).

{ 
    "$type": "ping", 
    "seq": 1 
} 

Server reagiert:

{ 
    "$type": "pong", 
    "seq": 1 
} 

Client-Anfrage

{ 
    "$type": "subscribe_tables" 
} 

Server mit der Liste der Tabellen reagieren wird, und aktualisieren Sie den Client mit table_added, table_removed und table_updated Nachrichten wenn sich der Status geändert hat.

{ 
    "$type": "table_list", 
    "tables": [ 
    { 
     "id": 1, 
     "name": "table 1", 
     "description" : "one, two" 
    }, { 
     "id": 2, 
     "name": "table 2" 
     "description" : "two, three" 
    } 
    ] 
} 

table_updated Ereignis

{ 
    "$type": "update_table", 
    "table": { 
    "id": 3, 
    "name": "table - Foo Fighters", 
    "participants": 4 
    } 
} 

Frage: Ich weiß, dass ich new EventSource() verwenden können, ist das richtig? Wie kann ich zB $type Daten damit versenden?

+0

Es ist seltsam, dass Sie den "Server ist bereit" sagen, wenn Sie noch nicht einmal wissen, wie Ihr Client eine Verbindung herstellen und die Daten erhalten wird. Wie planen Sie, Daten vom Client abzurufen: HTTP-Anfragen, WebSocket- oder Server-Side-Events? – jfriend00

+0

Ich kann eine Verbindung mit dem Server über wss: // – MurDaD

+0

Also, wenn ein WebSocket ist Ihr Plan, warum sprechen Sie über die Verwendung von 'new EventSource()'. Im Moment macht deine ganze Frage keinen Sinn.Wir können nicht sagen, worum es eigentlich geht. Wenn Sie eine Verbindung zu einem webSocket herstellen, senden Sie einfach Daten vom Server über den webSocket und lesen diese Daten vom webSocket auf dem Client. – jfriend00

Antwort

0

Ich weiß, dass ich neue EventSource() verwenden kann, ist das korrekt? Wie kann ich Daten $ type senden, zum Beispiel damit?

Nein, das ist nicht korrekt. Wenn Ihr Server eine WebSocket-Verbindung erwartet, verwenden Sie new WebSocket(...) vom Client, um die Verbindung vom Client zum Server herzustellen. Und EventSource() Objekt wird für serverseitige Ereignisse verwendet, die einen völlig anderen Transport von webSocket ist.

Sie können Programmierbeispiele here on MDN für die Verwendung von webSocket sehen.

Auch wenn Sie versuchen, Javascript-Objekte als Daten zu senden, würden Sie normalerweise JSON.stringify() verwenden, um sie in eine Zeichenfolge serialisieren und dann senden und dann auf der Empfängerseite JSON.parse() verwenden, um die JSON-Zeichenfolge wieder zu analysieren ein Javascript-Objekt. So würden Sie Informationen wie Ihre $type zusammen mit anderen Daten in derselben Nachricht senden.

FYI, socket.io ist eine Bibliothek auf WebSocket gebaut, die sehr beliebt geworden ist, weil es viele Dinge für Ihre automatisch, die in der Regel in WebSocket Programmierung wie JSON Serialisierung, automatische Wiederverbindung, automatische Keep Alive, Verbindung benötigt werden Drop Detection, etc ... Sie müssen es sicherlich nicht in Client und Server verwenden, aber es spart oft viel Zeit.