webSocket mit ws statt socket.io...

  • webSocket mit ws statt socket.io...

    Hallöchen,

    ich habe vor langer Zeit mein Server mit socket.io angefangen, welcher inzwischen auch schon sehr umfangreich ist.
    Nun habe ich gesehen es gibt ein paar Alternativen wie z.B. WS und ich bin am überlegen ob ich den Aufwand wagen soll um auf WS umzusteigen.
    im Grunde scheint mir socket.io einfach zu überladen zu sein und auch auf der Webseite würde WS die Ladezeit wieder beschleunigen, da nicht erst die library von socket.io eingebunden und geladen werden muss (also eine Verbesserung), zu dem habe ich auch noch keine große Seite gesehen die auf socket-io setzt xD

    Ich hatte mal nen kleinen Test gemacht da verschlang Socket-io mal eben 350kb mit gerade mal 2 Usern (144 bei 1), das ist alles andere als performant.

    Nachteile hat WS wohl, da es Protokoll-technisch wohl nicht mit alten Browsern arbeiten kann und auch mit proxys aber ich habe gesehen für prox gibt es ein Modul wodurch das kein Problem mehr sein sollte. daher kann es ja eig. nur von Vorteil sein?

    Was ich dringend bräuchte wäre eine Server zu Server Verbindung, sprich das sich ein Server als Client beim anderen Server authn kann (war mit socket.io-client möglich.
    Da ich abgesehen vom Webseiten-server noch nen Upload & Datei-server habe die sich beim Webseitenserver anmelden müssen.
    Konnte da leider nichts finden, hat da wer einen Tipp?

    MfG: Paykoman :whistling:
  • Paykoman schrieb:

    Nun habe ich gesehen es gibt ein paar Alternativen wie z.B. WS und ich bin am überlegen ob ich den Aufwand wagen soll um auf WS umzusteigen.
    Von ws auf socket.io umzustellen ist recht unproblematisch. Andersherum würde ich mir die Arbeit allerdings nicht machen. Das ist einfach zu aufwendig. Bei ws kannst du nur binäre Daten oder Texte übertragen. Du müsstest also immer erst alles in JSON verpacken. Es gibt auch keine Kanäle, Räume oder Callback-Funktionen. Du müsstest das alles selber nach Bedarf implementieren.


    Paykoman schrieb:

    Was ich dringend bräuchte wäre eine Server zu Server Verbindung, sprich das sich ein Server als Client beim anderen Server authn kann (war mit socket.io-client möglich.
    Auch bei ws müsste ein WebSocket-Klient enthalten sein. Für eine Server-Server-Kommunikation würde ich aber auf andere Protokolle umsteigen (z.B. MQTT (siehe auch mosca)).
  • Hallo, danke für die Antwort.

    Ja bisher sind es eh nur binär-Daten aber du weißt nicht zufällig wo ich den ws-client finde?

    Hmm, naja andere Protokolle? Letztlich erhält der andere Server ja per socket eine Aufgabe die er erledigen muss und da muss ich dann entsprechend ein emit zurücksenden das dem user zuordbar ist (Ursprung des Befehls). Wüßte jetzt nicht was da an Vorteile sein sollten. Zu mal wenn die server-client Verbindung einmal steht und authentifiziert wurde diese unproblematisch genutzt werden kann.

    MfG: Paykoman
  • Lichtjaeger schrieb:

    hier

    JavaScript-Quellcode

    1. const WebSocket = require('ws')
    2. const WebSocketServer = WebSocket.Server

    In der Doku wird WebSocket.Server ausschließlich in Zusammenhang mit dem eigenen Server verwendet.
    Host, Port, Server und NoServer legen fest an welche Parameter der zustartende Server gebunden wird.

    Ich sehe gerade aber in der Doku das die Klasse WebSocket genau wie beim Webseiten-client verfügbar ist, ich nehme mal an das daher genau so der Server als Client auf einen anderen Server connecten kann:

    JavaScript-Quellcode

    1. var externServers = [];
    2. externServers.push( new WebSocket('wss://www.sample.com:8080', ['soap', 'xmpp']) );
    Naja werde ich später wohl testen können und sehen ob es klappt.


    LG: Paykoman
    PS: denke nachher schaffe ich es dann auch mal mein aktuellen Server zu posten