【问题标题】:Can't receive data from io.emit()无法从 io.emit() 接收数据
【发布时间】:2020-10-16 11:20:20
【问题描述】:

我正在尝试向所有客户端发送数据,只是为了测试 socket.io 的工作原理。 无论我如何尝试,我似乎都无法从服务器取回任何数据。

事件被触发,因此数据到达服务器端,但没有到达客户端。

在服务器端,我这样做:

io.on('connection', (socket) => {
    socket.on('chatMessage', data => {
        console.log(data);
        io.emit(data);
    });
});

console.log() 在这里可以正常工作,所以在该行之前它都很好。

在客户端,我尝试简化事情以查看如下结果:

const socket = io.connect('http://localhost:5000');
socket.on('connect', () => {
    socket.emit('chatMessage', {a:"fsdfsdfsd"});
});

socket.on('chatMessage', data =>{
    console.log(data);
});

socket.emit() 触发,但它没有到达任何地方。 我以前从未使用过 socket.io,但我阅读了文档,它说 io.emit() 将数据发送到所有连接的客户端。

以防万一,我尝试连接多个客户端,但仍然无法正常工作。

【问题讨论】:

  • 而不是io.emit(data),使用io.emit('chatMesage', data)? =)

标签: node.js reactjs socket.io


【解决方案1】:

我建议的第一件事是通过在服务器端的 on 连接块中添加 console.log() 来检查客户端是否真的连接到服务器套接字。

另外,您在服务器端的io.emit(data); 将不起作用,因为发出函数的第一个参数应该是事件名称。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-11
    • 2017-11-25
    • 2010-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多