2016-07-13 16 views
1

Ich habe ein einfaches Express + socket.io-Projekt gestartet. Auf dem Server habe ich mich beim "Verbindung" -Ereignis des Sockets registriert und sende eine Nachricht an den Client. Das funktioniert gut.Server, der die socket.io-Nachricht des Clients nicht empfängt

Wenn ich die Nachricht auf der Client-Seite vom Server erhalten, in diesem Event-Handler mache ich socket.emit ('Nachricht', 'irgendein Text');

Diese Nachricht kommt nicht zum Server. Ich weiß, es sollte sehr einfach sein und so denke ich, dass ich etwas dummes vermisse. Jede Hilfe wird geschätzt.

Servercode:

var app = require('express')(); 
var http = require('http').Server(app); 
var io = require('socket.io')(http); 

app.get('/', function (req, res) { 
    res.sendfile('index.html'); 
}); 

io.on('connection', function (socket) { 
    console.log('a user connected'); 
    io.emit('server-message', 'hello socket.io server'); 
}); 

io.on('message', function(message) { 
    console.log(message); 
}); 

Client-Code:

window.socket = io.connect('http://localhost:3000'); 

socket.on('server-message', function (message) { 
      console.log(message); 
      socket.emit('message', 'hello socket.io from browser'); 
     }); 

Antwort

2

Sieht aus wie io.emit('server-message', 'hello socket.io server'); zu socket.emit('server-message', 'hello socket.io server'); geändert werden soll, Sie würden dann folgendes in die connection Ereignis-Listener bewegen müssen:

io.on('message', function(message) { 
    console.log(message); 
}); 

und ändern Sie es in

socket.on('message', function(message) { 
    console.log(message); 
}); 
+0

Sie haben meine Augen geöffnet! Ich habe nicht verstanden, wo bekomme ich das Socket-Objekt auf dem Server. Dann habe ich ein wenig gesucht und festgestellt, dass das "Verbindung" -Ereignis es hat und dort sollte das Abonnement gemacht werden. Vielen Dank! –

+0

Ich habe mich gefragt, warum Sie die io.on in socket.on geändert haben und dann festgestellt haben, dass das Argument von 'io.on ('connection', function (socket) 'der Grund ist. Ich weiß nicht warum, aber das war nicht "Es ist offensichtlich, dass es von den Dokumenten her offensichtlich ist, obwohl es genau dort ist. Scheint wie ein normaler Fehler für Noobs, aber wirklich schwer, die Antwort zu finden, wenn du nicht verstehst, wie es funktioniert. – wordsforthewise

Verwandte Themen