Socket.io不从客户端发送到服务器

时间:2017-09-20 07:15:47

标签: node.js socket.io

我建立了一个服务器 - 客户端连接协议:

服务器:

const app = express();
const http = require('http');
const server = http.createServer(app);
const io = require('socket.io').listen(server);
io.on('connection', function (socket) {
    "use strict";
    socket.emit('connectionSuccess', {});
    socket.emit('initmap', map.objects);

    io.on('test', function (event) {
        console.log('received client emit');
    });
});

客户端:

socket.on('connectionSuccess', function (event) {
    console.log('connection successful');
    socket.emit('test', {"test": "data"});
});

当服务器在指定端口上运行,并且用户访问客户端时,建立连接并且客户端控制台输出连接成功。

服务器能够发出'initmap'以将数据发送到客户端以供读取,但是,在连接时将测试数据从客户端发送回服务器也是如此。

为什么在这种情况下,发出似乎只能在服务器之间工作而不是客户端到服务器?

1 个答案:

答案 0 :(得分:1)

您应该在套接字实例上侦听test事件,而不是在服务器实例上:

io.on('connection', function (socket) {
  ...
  socket.on('test', function (event) {    // <-- `socket.on()` instead of `io.on()`
    console.log('received client emit');
  });
});