Anzeigen und Senden

Da wir serverseitig JSON als Datenformat für die übertragenen Daten vorgegeben haben, wird der Parameter entsprechend geparst. Dadurch erhalten wir eine Datenstruktur, die unter anderem den Namen des aktuellen Titels und die Lautstärke enthält. Diese Informationen werden direkt in die entsprechenden HTML-Elemente eingetragen.

Stellenmarkt
  1. Prozess- und Projektmanager (m/w/d)
    Radeberger Gruppe KG, Frankfurt am Main
  2. Software Ingenieur*in (d/m/w) Equipment Integration
    OSRAM Opto Semiconductors Gesellschaft mit beschränkter Haftung, Regensburg
Detailsuche

Die Buttons sind mit onclick-Events versehen und rufen damit die send()-Funktion mit dem jeweiligen Kommando als Parameter auf. Diese Funktion ruft ihrerseits die send()-Methode des Websocket-Objekts auf. Gesendet wird dabei auch wieder eine Datenstruktur, die per JSON in Text umgewandelt wurde.

...
<button id="btnPlay" onclick="send(COMMAND_PLAY)">Play</button>
<button id="btnStop" onclick="send(COMMAND_STOP)">Stop</button>
...

  1. function send(val) {
  2.  
  3. if(con == null) {
  4. return;
  5. }
  6.  
  7. if(COMMAND_VOLUP == val) {
  8. con.send(JSON.stringify({vol:volume+1}));
  9. } else if(COMMAND_VOLDOWN == val) {
  10. con.send(JSON.stringify({vol:volume-1}));
  11. } else {
  12. var cmd_data = {cmd:val};
  13. con.send(JSON.stringify(cmd_data));
  14. }
  15. }

Golem Akademie
  1. Netzwerktechnik Kompaktkurs: virtueller Fünf-Tage-Workshop
    6.–10. Dezember 2021, virtuell
  2. Scrum Product Owner: Vorbereitung auf den PSPO I (Scrum.org): virtueller Zwei-Tage-Workshop
    3.–4. März 2022, virtuell
Weitere IT-Trainings

Das ist tatsächlich alles, mehr ist für eine bidirektionale Kommunikation nicht notwendig. AJAX und REST-APIs wirken dagegen komplizierter.

Musikplayer ansteuern

Bevor wir zur Serverkomponente für den Websocket kommen, betrachten wir noch das Skript zur Ansteuerung des Musikplayers. Es empfängt über Bluetooth Low Energy die Kommandos und steuert davon abhängig per Kommandozeile den Musikplayer. Wir setzten dazu iTunes ein, das sich im laufenden Betrieb per Applescript steuern lässt. Je nach Kommando ermittelt es auch die aktuell eingestellte Lautstärke und den laufenden Track, ebenfalls per Applescript. Beide Infos werden asynchron über BluetoothLE wieder übermittelt. Applescript und iTunes sind kein Muss, aber unter Mac OS praktisch. Unter anderen Betriebssystemen, insbesondere unter Linux, gibt es vergleichbare Optionen.

Mit dem Skript wird der Laptop zum angesteuerten BluetoothLE-Peripheral. In unserem Vorgängerartikel diente der Laptop dagegen als steuernde BluetoothLE-Central. Die Umsetzung erfolgt auf Basis der Node.js-Bibliothek Bleno.

Beim Peripheral wird ein Service mit drei Characteristics definiert: Die Kommando-Characteristic (CMD) kann beschrieben werden, darüber setzen wir das auszuführende Kommando, codiert als Zahl. Die Lautstärke-Characteristic (VOL) kann gelesen, abonniert und beschrieben werden. Das heißt: Darüber erhalten wir die aktuell eingestellte Lautstärke, oder wir können die Lautstärke in Prozent setzen (0 - 100%). Eine reine Characteristic zum Lesen ist schließlich Track (TRK) für den aktuell abgespielten Titel.

Das Kommando codieren wir aus Gründen der Datensparsamkeit als Zahl. Wer will, kann stattdessen auch Zeichenketten benutzen, was allerdings die Datenübertragung verlängert.

Bitte aktivieren Sie Javascript.
Oder nutzen Sie das Golem-pur-Angebot
und lesen Golem.de
  • ohne Werbung
  • mit ausgeschaltetem Javascript
  • mit RSS-Volltext-Feed
 Websocket öffnenMittler zwischen den Welten 
  1.  
  2. 1
  3. 2
  4. 3
  5. 4
  6. 5
  7. 6
  8. 7
  9. 8
  10. 9
  11. 10
  12. 11
  13. 12
  14.  


Anonymer Nutzer 28. Jul 2014

Ich würde sagen hier könnte man eleganter und auch verhältnismäßig preiswert mit Zigbee...

savejeff 24. Jul 2014

perfekt! die Artikel sind echt zeitlos. ich werde noch ein paar Artikel nachholen.

holminger 24. Jul 2014

Meine RasPis dienen einmal als AirPrint-Server für einen 15 Jahre alten Kyocera...

currock63 23. Jul 2014

die guten alten Zeiten der c't, als es noch in fast jeder Ausgabe etwas zum selber...



Aktuell auf der Startseite von Golem.de
CoreELEC/LibreELEC
Smart-TV mal anders

Eine TV-Box Marke Eigenbau bringt Spaß und Gewissheit über unsere Daten. Die Linux-Distributionen CoreELEC und LibreELEC eignen sich da besonders.
Eine Anleitung von Sebastian Hammer

CoreELEC/LibreELEC: Smart-TV mal anders
Artikel
  1. Softwarepatent: Uraltpatent könnte Microsoft Millionen kosten
    Softwarepatent
    Uraltpatent könnte Microsoft Millionen kosten

    Microsoft hat eine Klage um ein Software-Patent vor dem BGH verloren. Das Patent beschreibt Grundlagentechnik und könnte zahlreiche weitere Cloud-Anbieter betreffen.
    Ein Bericht von Stefan Krempl

  2. Amazon: Fire TV Stick 4K Max erhält erweiterte Heimkinofunktion
    Amazon
    Fire TV Stick 4K Max erhält erweiterte Heimkinofunktion

    Mit einem geplanten Update kann der Fire TV Stick 4K Max den Klang anderer Zuspielgeräte auf Echo-Lautsprechern ausgeben.

  3. Krypto: Angeblicher Nakamoto darf 1,1 Millionen Bitcoin behalten
    Krypto
    Angeblicher Nakamoto darf 1,1 Millionen Bitcoin behalten

    Ein Gericht hat entschieden, dass Craig Wright der Familie seines Geschäftspartners keine Bitcoins schuldet - kommt jetzt der Beweis, dass er Satoshi Nakamoto ist?

Du willst dich mit Golem.de beruflich verändern oder weiterbilden?
Zum Stellenmarkt
Zur Akademie
Zum Coaching
  • Schnäppchen, Rabatte und Top-Angebote
    Die besten Deals des Tages
    Daily Deals • Kingston PCIe-SSD 1TB 69,90€ & 2TB 174,90€ • Samsung Smartphones & Watches günstiger • Saturn-Advent: Xiaomi Redmi Note 9 Pro 128GB 199€ • Alternate (u. a. Razer Opus Gaming-Headset 69,99€) • Release heute: Halo Infinite 68,99€ • MM-Aktion: 3 Spiele kaufen, nur 2 bezahlen [Werbung]
    •  /