Websocket Echo
ws
- webserver
- websockets
Mohn;
mal angenommen, einen Handvoll Clients verbinden sich mit einem Websocket-Server (WSS), so hat der Server eine Handvoll offene Verbindungen. Der Server sei so konfiguriert, dass er einkommende Daten einfach nur 1:1 zurücksendet (Echo).
Nun, ein Client pustet jetzt ein 'hallo' in die Röhre und der WSS schickts zurück. Spannende Frage: Kriegen das dann alle CLients, die mit dem WSS verbunden sind?
MfG, WS
Nun, ein Client pustet jetzt ein 'hallo' in die Röhre und der WSS schickts zurück. Spannende Frage: Kriegen das dann alle CLients, die mit dem WSS verbunden sind?
Wenn du es an alle sendest, bekommen es alle, sendest du es nur an einen, dann bekommt nur der eine eine Antwort.
Nun, ein Client pustet jetzt ein 'hallo' in die Röhre und der WSS schickts zurück. Spannende Frage: Kriegen das dann alle CLients, die mit dem WSS verbunden sind? Wenn du es an alle sendest, bekommen es alle, sendest du es nur an einen, dann bekommt nur der eine eine Antwort.
Genial. Aber sag bloß keinen, dass nicht der client einen broadcast sendet, sondern der Server entsprechend konfiguriert werden muss. Das habe ich mittlerweile selbst herausgefunden :)
Nun, ein Client pustet jetzt ein 'hallo' in die Röhre und der WSS schickts zurück. Spannende Frage: Kriegen das dann alle CLients, die mit dem WSS verbunden sind? Wenn du es an alle sendest, bekommen es alle, sendest du es nur an einen, dann bekommt nur der eine eine Antwort.
Genial. Aber sag bloß keinen, dass nicht der client einen broadcast sendet, sondern der Server entsprechend konfiguriert werden muss. Das habe ich mittlerweile selbst herausgefunden :)
Was auch immer du sagen willst, eine Websocketverbindung ist eine Verbindung zw. Server und Client. Da ist nichts mit Broadcast.
Nun, ein Client pustet jetzt ein 'hallo' in die Röhre und der WSS schickts zurück. Spannende Frage: Kriegen das dann alle CLients, die mit dem WSS verbunden sind? Wenn du es an alle sendest, bekommen es alle, sendest du es nur an einen, dann bekommt nur der eine eine Antwort.
Genial. Aber sag bloß keinen, dass nicht der client einen broadcast sendet, sondern der Server entsprechend konfiguriert werden muss. Das habe ich mittlerweile selbst herausgefunden :) Was auch immer du sagen willst, eine Websocketverbindung ist eine Verbindung zw. Server und Client. Da ist nichts mit Broadcast.
Wer schrieb denn was von Broadcast? Achsoja, das warst Du. Und hier redense auch von Broadcast. Also gut, ich hab mir die paar Zeilen vorhin mal kopiert und hab das Teil Chatserver genannt, das hat dann auf Anhieb funktioniert, CPAN-mäßig-saugut halt.
Fazit: Ein WS Server, der nur ein einfaches echo macht (siehe mein Eingangspost), reicht eben nicht. Vielmehr muss er das echo an alle ihm bekannten Connections senden, eine Zeile ist das mehr:
$_->send_utf8($msg) # das echo, die Nachricht geht zurück
for $conn->server->connections; # hiermit an alle
mfg ;)
Für Demo-Zwecke reicht der hier
var ws = new WebSocket("wss://echo.websocket.org");
wobei ein Chat dann natürlich nur mit sich selbst geht, aber das ist schon beeindruckend genug (das bischen JS ist in 30 Minuten getippt). So muss das Geschnatter nirgendwo mehr gespeichert werden, wer's im Broswer nicht mehr sehen will, macht einfach ein Reload.
Vielleicht gibts ja öffentliche Websocket-Server die als broadcast, echo konfiguriet sind. Ich hab nur keinen gefunden, ansonsten einfach oben die Zeile austauschen, dann können beliebig viele Clients mitreden.
mfg