WebSocket

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Hallo miteinander,

    ich bin neu in der node.js Welt. Das Projekt mit dem ich mich beschäftige ist wie ich eine Websocket Verbindung zu einem Server herstellen kann ohne einen Browser.
    ICh habe einen Code Schnipsel der in einer html Datei genau das macht was er soll.
    Aber ich hätte gerne dass das mit node.js ausgeführt wird.
    Vielleicht könnte mir da jemand einen Tipp oder Hilfestellung geben wie ich das in der Console mit node ausgeführt bekomme.

    JavaScript-Quellcode

    1. var ws = new WebSocket('wss://ws.binaryws.com/websockets/v3?app_id=1089');
    2. ws.onopen = function(evt) {
    3. ws.send(JSON.stringify({ticks:'R_100'}));
    4. };
    5. ws.onmessage = function(msg) {
    6. var data = JSON.parse(msg.data);
    7. console.log('ticks update: %o', data);
    8. };
    Wie gesagt, in meiner html Datei mit js Blöcken klappt das hervorragend, nur mit dem node.js will es noch nicht so recht.
    Vielen Dank für jede Hilfe
  • Frika schrieb:

    Vielleicht könnte mir da jemand einen Tipp oder Hilfestellung geben wie ich das in der Console mit node ausgeführt bekomme.
    Das ganze im REPL (der Console) einzugeben ist sehr unbequem und dafür ist Node auch nicht gemacht.

    Leg dir eine Datei an (z.B. "index.js") und führe diese dann mit Node aus (Befehl: node index.js).


    Um WebSockets in Node zu verwenden, musst du sie erst mal in Node installieren. Führe den Befehl npm install ws im Ordner mit deiner Datei aus.

    Deine Datei könnte dann z.B. so aussehen:

    JavaScript-Quellcode: index.js

    1. const WebSocket = require('ws')
    2. const ws = new WebSocket('wss://ws.binaryws.com/websockets/v3?app_id=1089')
    3. ws.on('open', () => {
    4. ws.send(JSON.stringify({ ticks: 'R_100' }))
    5. })
    6. ws.on('message', msg => {
    7. const data = JSON.parse(msg.data)
    8. console.log('ticks update: %o', data)
    9. })
    Alles anzeigen
  • Lichtjaeger schrieb:

    Um WebSockets in Node zu verwenden, musst du sie erst mal in Node installieren.
    Ah jetzt, vielen Dank, das habe ich seither nicht verstanden mit den Modulen. Ich kenne das aus anderen Sprachen mit import, include, require... etc. Aber da wird eben eine ganze lib eingebunden und man kann dann alle verfügbaren Klassen verwenden.

    Wenn ich deine erste Zeile in meinen Code übernehme funktioniert es. Bei deinem Code bekomme ich Synatx Error...JSON irgendwas.
    ICh habe es nicht herausgefunden warum weil deine Schreibweise ist so ganz anders als meine. Ich bin da eher mit Semikolon und so unterwegs. Blöde Frage jetzt, ist das wie du es formulierst die aktuelle Syntax in js.

    Ich hätte aber noch eine andere Frage um mein Thema weiter zu treiben. Ein Server mit node ist ja recht einfach aufgerufen. Man kann ja dann im browser
    mit "http://127.0.0.1:8081/" als Beispiel den Server aufrufen und bekommt dann sein "Hello World" zurück.
    Wenn ich aber jetzt z.B. meine obige Datei über diesen Server aufrufen möchte wie müsste ich dann vorgehen?

    Vielen Dank nochmal
  • Frika schrieb:

    Blöde Frage jetzt, ist das wie du es formulierst die aktuelle Syntax in js.
    In JS gibt es keinen offiziellen Style-Guide. Die beiden verbreitetsten sind allerdings StandardJS und der Airbnb JavaScript Style Guide. Mein persönlicher Style entspricht größtenteils StandardJS.

    Was Features wie const oder Arrow-Functions (() => {}) angeht: Ja, das ist aktueller JS Syntax und du solltest es kennen und anwenden. Ein Stichwort hierfür ist "ES6" oder "ES2015" (und aufwärts).



    Frika schrieb:

    Wenn ich aber jetzt z.B. meine obige Datei über diesen Server aufrufen möchte wie müsste ich dann vorgehen?
    Zum ausliefern von Dateien mit Node gab es hier schon mal einen Beitrag. Die dabei verwendeten Module "fs" und "http" gehören zu Node und müssen daher nicht mit npm installiert werden. Die offizielle Node Dokumentation stellt eine Liste solcher Module dar.

    Davon mal abgesehen bieten es sich an, selbst bei einfachen Node-Webservern ein Framework zu verwenden. Diese erleichtern dir die Arbeit wirklich. Als Beispiele express, koa und spirit.

    Da du momentan nur statische Dateien ausliefern möchtest, würde ich dir das Modul static-server empfehlen.

    Wenn du deinen eigenen WebSocket-Server zum Webserver erstellen willst, gibt es da ein Beispiel mit express in der ws-Dokumentation.



    Frika schrieb:

    Bei deinem Code bekomme ich Synatx Error...JSON irgendwas.
    Das dürfte wohl in Zeile 10 sein, die ich aus deiner Zeile 8 übernommen habe. msg hat hier wohl keine data-property. Lass einfach mal msg direkt in die console loggen.



    PS: Eine gute Einarbeitung in das ganze Node-Thema erhältst du mit den Kursen von Nodeschool. Dort gibt es auch Kurse zu speziellen Frameworks wie express.
  • Vielen Dank für deine ausführlichen Antworten, das mit der Syntax muss ich mir noch nähers anschauen.

    Lichtjaeger schrieb:

    Das dürfte wohl in Zeile 10 sein, die ich aus deiner Zeile 8 übernommen habe. msg hat hier wohl keine data-property. Lass einfach mal msg direkt in die console loggen.
    Ich dachte schon dass msg eine data property hat weil, wie gesagt, in meiner Version bekomme ich die TIckwerte tadelos ausgeliefert in der Console. Warum es in deiner Version nicht so ist verstehe ich nicht, würde mich aber interessieren.

    Vielen Dank