我开始了一个简单的express + socket.io项目。 在服务器上,我注册了socket' connection'事件,然后我发送消息给客户。这很有效。
当我从服务器收到客户端的消息时,在这个事件处理程序中我执行socket.emit(' message',' some text');
此消息不会到达服务器。 我知道它应该很简单,因此我觉得我错过了一些愚蠢的东西。 任何帮助表示赞赏。
服务器代码:
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);
});
客户代码:
window.socket = io.connect('http://localhost:3000');
socket.on('server-message', function (message) {
console.log(message);
socket.emit('message', 'hello socket.io from browser');
});
答案 0 :(得分:5)
看起来应将io.emit('server-message', 'hello socket.io server');
更改为socket.emit('server-message', 'hello socket.io server');
然后您需要将以下内容移至connection
事件监听器中:
io.on('message', function(message) {
console.log(message);
});
并将其更改为
socket.on('message', function(message) {
console.log(message);
});