2017-06-21 6 views
0

Ich habe gerade angefangen, über Websockets zu lernen, wenn etwas, was ich sage, keinen Sinn macht, ist wahrscheinlich, warum. Ich verstehe die Grundlagen ihrer Arbeitsweise. Ein Client kann eine Nachricht an den Server senden und umgekehrt. Meine Frage ist, was passiert, wenn der Client die gleiche Verbindung für verschiedene Zwecke verwenden soll. Zum Beispiel, wenn der Client eine Nachricht senden oder seinen Charakter in einem Spiel bewegen kann. Würden Sie für diese Fälle separate Sockets benötigen? Ich stelle mir vor, dass Sie einfach einen Standard für Ihre Nachrichten erstellen können und dann eine switch-Anweisung auf dem Server haben, aber das scheint unelegant. Wenn es darauf ankommt, verwende ich das "express-ws" -Paket von Node für den Server. Danke für die Hilfe!Websocket Verbindung für mehrere Zwecke

Antwort

0

Ihre Intuition ist korrekt. Sie würden normalerweise ein Standardnachrichtenformat erstellen, das über eine Eigenschaft verfügt, die den Nachrichtentyp angibt.

Sie müssen keine switch-Anweisung auf dem Server verwenden. Wenn Sie möchten, können Sie einen eventEmitter und nur .emit() jede eingehende Nachricht zu einem eventName die gleiche wie der Nachrichtentyp erstellen. Dann würde Ihr Servercode Listener nur für die Nachrichten registrieren, auf die er achten möchte, und Sie würden die switch-Anweisung vermeiden. Dies würde auch ermöglichen, dass Ihr Server-Code mehr in Module aufgeteilt wird. Sie müssen nur den eventEmitter freigeben, mit dem jedes Modul eine eingehende Nachricht abhören oder eine ausgehende Nachricht senden möchte.

FYI, socket.io ist ein Client- und Server-Layer, der auf webSocket sitzt und all dies für Sie erledigt (zusammen mit einer Reihe anderer Funktionen). Es gibt eine unvollständige Liste von Funktionen, die socket.io hier hat: Moving from socket.io to raw websockets?

Verwandte Themen