2017-04-05 3 views
0

Ich arbeite an einer Angularjs und Node.js basierten Anwendung. Dies ist eine organisationsbasierte Anwendung. In dieser App muss ich Chat-Funktionalität implementieren. Wie wir alle wissen Socket.io ist die beste Lösung für Instant-Messaging-App und ihre Zuverlässigkeit. Aber abgesehen davon habe ich wenig Zweifel an Socket.io. Nach meinem Verständnis, wenn wir Socket-Programmierung (Socket.io in meinem Fall) verwenden, reserviert es für jede Verbindung einen Port. Was ist, wenn die Größe einer Organisation zu groß ist? Wird es funktionieren? Auf der Serverseite verwende ich Express js. Wird Socket.io zusätzliche Last auf dem Server erzeugt?Ist Socket.io Ideal für Chat Modul

Sollte ich mit Socket.io oder HTTP gehen?

Danke.

+0

Welche Skala (gleichzeitig verbundene Benutzer) glauben Sie mit einem einzigen Server unterstützen müssen? Und, gibt es einen Grund, warum Sie Clustering verwenden würden?Und wie viele dieser Kunden würden in einer bestimmten Sekunde gleichzeitig am Senden oder Empfangen eines Chats beteiligt sein? – jfriend00

+0

@ _jfriend00, Es hängt von der Größe der Organisation ab. Das kann variieren. Ja, Sie haben recht, ich werde keinen einzigen Server oder kleinen Server verwenden, wenn die Größe der Organisation groß ist. –

+0

Ihre Frage ergibt dann keinen Sinn. Die Technologie wird sicher funktionieren. Wird es in Ihrem gewünschten Umfang funktionieren? Das hängt ganz davon ab, was Ihre gewünschte Skalierung ist und welche Hardware Sie bereit sind zu implementieren und welche Art von Lastmuster die Benutzer darauf werfen werden. Da Sie keine Antworten auf diese Anforderungen liefern möchten, kann Ihre Frage nicht beantwortet werden. Ja, diese Technologie funktioniert in gewissem Umfang, einige Last und einige Hardware-Bereitstellung. – jfriend00

Antwort

0

Für Anfänger ist Chat mit socket.io wirklich einfach zu verstehen und zu integrieren. Der Umfang der Bandbreite hängt jedoch stark von der Datenmenge ab, die Sie vom Server senden, und davon, wie viele Daten vom Client gesendet werden. Die Bandbreitennutzung hängt auch davon ab, welchen Socket.IO-Transport Sie verwenden und welches Taktintervall Ihre Anwendung hat.

Die Auswirkungen auf die Leistung der Anwendung hängen auch von der Art der Anwendung ab, die Sie ausführen, und von der Leistungsfähigkeit Ihrer Maschine und/oder Ihres Netzwerks. Unabhängig von den Fähigkeiten Ihres Computers haben jedoch mehr als 5000 Clients erhebliche Auswirkungen auf die Leistung, sofern Sie die Anwendung nicht auf mehrere Prozessorkerne skalieren.

Sie können auf diesen Link für weitere Details verweisen. Link

1

HTTP-Abfragen für jede Art von interaktivem Timing sind enorm ineffizient. Sie werden mehrere zehntausend Kunden haben, die immer wieder Ihren Server fragen: "Haben Sie etwas Neues für mich?" und der Server antwortet regelmäßig "Nein, noch nichts".

webSockets (die socket.io als Transport verwendet) wurden genau deshalb erfunden, weil sie für die interaktive Zweiwegkommunikation effizienter sind als das HTTP-Polling.

Moderne Server können so konfiguriert werden, dass sie Hunderttausende von simultanen WebSocket-Verbindungen verwalten. Wie viele einzelne Server von Ihnen tatsächlich im realen Leben Ihrer Anwendung handhaben können, hängt von Dutzenden Faktoren ab, von denen Sie keine in Ihrer Frage angegeben haben. Aber die Wahl von webSocket/socket.io ist keine schlechte architektonische Wahl für den Zwei-Wege-Chat - das ist die Art von Anwendung, für die es erfunden wurde, weil es im Allgemeinen besser ist als das HTTP-Polling bei solchen Dingen.

Sehen Sie diese Referenzen:

What are the pitfalls of using Websockets in place of RESTful HTTP?

Ajax vs Socket.io

Can this technology stack scale?

Do HTML WebSockets maintain an open connection for each client? Does this scale?

600k concurrent websocket connections on AWS using Node.js

Node.js w/1M concurrent connections!

HTML5 WebSocket: A Quantum Leap in Scalability for the Web

+0

Hinzugefügte Referenzartikel. – jfriend00

Verwandte Themen