2017-11-23 3 views
0

Ich verwende eine Websocket-Bibliothek auf dem Server für die Herstellung von Socket-Verbindung.Persist WebSocket Verbindungsobjekt über den multiplen Server

https://github.com/websockets/ws

Ich habe ein mehr als ein Server in Cluster, mag ich wissen, wie kann ich dasselbe Socket-Verbindungsobjekt auf einem anderen Server in dem Cluster verwenden.

Und auch ich will wissen, was die beste Option für Webchat Implementierung nativer websocket ist oder Socket.io

Antwort

1

Sie nicht die gleiche tatsächliche Socket-Objekt über mehrere Server verwenden können. Das Socket-Objekt stellt eine Socket-Verbindung zwischen einem Client und einem physischen Serverprozess dar. Es ist möglich, ein virtuelles Socket-Objekt zu erstellen, das weiß, auf welchem ​​Server seine Verbindung ist, und dem Server eine Nachricht zu senden, die dann über den tatsächlichen Socket von diesem anderen Server gesendet wird.

Die socket.io/redis adapter ist eine solche virtuelle Möglichkeiten, dies zu tun. Sie richten einen node.js-Cluster ein und verwenden den redis-Adapter mit socket.io. Es verwendet einen zentralen, auf Redis basierenden Speicher, um zu verfolgen, welcher Prozess für jede physische Verbindung benötigt wird. Wenn Sie dann eine Nachricht von einem der Serverprozesse an einen bestimmten Client senden möchten, senden Sie diese Nachricht über socket.io und suchen in der redis-Datenbank, in der der Socket verbunden ist, nach Ihnen, kontaktiert den tatsächlichen Server und fragt Es sendet die Nachricht an diesen bestimmten Client über die Verbindung socket.io, die derzeit in diesem anderen Serverprozess vorhanden ist. Ebenso können Sie zu Gruppen von Sockets senden und es wird die ganze Arbeit unter den Deckeln tun, um sicherzustellen, dass die Nachricht an die Clients gelangt, egal mit welchem ​​Server sie verbunden sind.

Sie könnten sicherlich etwas ähnliches für einfache WebSocket-Verbindungen bauen und andere haben Stücke davon gebaut. Ich bin nicht vertraut genug mit dem, was draußen in der Wildnis existiert, um irgendwelche Empfehlungen für eine einfache webSocket zu geben. Dort plenty of articles auf Skalierung webSocket Server horizontal, die Sie mit Google finden und lesen können, um zu beginnen, wenn Sie es mit einem einfachen webSocket tun möchten.

+0

Danke jfriend00 –

+0

@shubhamkatariya - Wenn Ihre Frage jetzt beantwortet wird, können Sie dies der Community anzeigen, indem Sie auf das Häkchen links neben der Antwort klicken und sich einige Reputationspunkte hier auf dem Stack-Overflow verdienen. – jfriend00

Verwandte Themen