Innerhalb eines express.js-Projekts versuche ich, Daten vom nodeJS-Server an den Client zu senden.Socket io gibt nur Daten beim erneuten Laden der Seite aus
Bei Erreichen der Seite meldet das Terminal (von dem ich den Server initiierte), dass ein Benutzer über Socket verbunden ist. Beim Ausführen der Funktion, die die Socket-Funktion enthält, tritt jedoch nichts auf.
Nur beim erneuten Laden der Webseite erscheinen die ausgegebenen Daten in den Protokollen von html und Terminal Console.
Unten ist der Code, der die Buchse innerhalb einer Callback-Funktion auslösenden, in app.js
foo(function(fooCallback) {
console.log('Callback triggered');
io.on('connection', function(socket) {
console.log('about to send data via socket');
io.sockets.emit('person', { 'name': 'Jack Smith' });
});
});
global.js - (Client-Seite nach js Skripts jquery und Buchse geladen)
var socket = io.connect();
socket.on('person', function(socket){
console.log('client recieved something from socket');
var personName = socket.name;
$('#person').html(personName);
});
Warum werden Daten nur beim erneuten Laden der Webseite und nicht automatisch ausgegeben?
Ah das ist es, danke! – Robert
Aber wie soll das funktionieren? An dem Punkt, an dem 'io.sockets.emit()' läuft, ist es während der Server-Initialisierung, so dass noch keine Sockets verbunden sind, so dass nichts unternommen wird. Ich frage mich, ob es innerhalb des Verbindungsrückrufs sein sollte, wie es war, aber stattdessen sollte es "socket.emit (...)" sein, also sendet es nur an den gerade verbundenen Sockel? – jfriend00