Am 2 pagini HTML/JavaScript in October CMS (Laravel). Cand sunt pe pagina 1 si apas pe un buton, vreau ca pagina 2 sa afiseze o informatie. Problema e ca nu resuesc deloc sa fac socket-ul sa functioneze…
Aveti o idee/exemplu de cod cat mai simplu? Primesc eroarea urmatoare: Firefox can’t establish a connection to the server at ws://myproject.test/index (myproject.test/index fiind pagina 2).
Pagina 1:
let socket = new WebSocket("ws://myproject.test/index");
socket.onopen = function(e) {
socket.send("My name is Johnss");
};
socket.onmessage = function(event) {
alert(`[message] Data received from server: ${event.data}`);
};
socket.onerror = function(error) {
console.log(error);
};
Am tot catuat solutii, dar degeaba… Am incercat pe Google Chrome, la fel…
Este vorba despre 2 pagini diferite din același site deschise in acelasi browser (taburi, windowuri diferite)? Daca da, atunci poti sa folosesti Broadcast Channel.
De ce ai decis ca ai nevoie de websockets ? De ce pagini vorbim ?
Websockets se foloseste pentru a trimite date bidirectional in timp real. Ai nevoie de un server. Apăsarea unui buton si afișarea datelor pe o pagina in timp real se poate rezolva cu server-side events.
Oricum ai nevoie de un server, asta dacă nu vorbim de tab-uri diferite.
Dacă vorbim de mai multe tab-uri deschise și vrei să se poată comunica între ele, poți folosi BroadcastChannel (așa cum ți-a spus deja micku7zu). Aici găsești documentația: BroadcastChannel - Web APIs | MDN
Uite și exemplu. Creează două fișiere, deschide-le în ferestre separate și apasă butonul într-una din ele.