服务器没有收到客户端的socket.io消息

Gal*_*Ziv 4 node.js socket.io

我开始了一个简单的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);
});
Run Code Online (Sandbox Code Playgroud)

客户代码:

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

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

Eva*_*cas 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);
});
Run Code Online (Sandbox Code Playgroud)

并将其更改为

socket.on('message', function(message) {
  console.log(message);
});
Run Code Online (Sandbox Code Playgroud)