You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Socket.IO客户端向服务端发送数据失败问题排查

问题分析与解决

嘿,我发现你的问题所在啦!服务端无法接收客户端数据的核心原因是事件监听的对象搞错了。

错误原因拆解

在你的server.js里,你在connection事件的回调中,用全局的io对象去监听data事件,但实际上每个客户端连接都会创建一个独立的socket实例,客户端发送的事件是绑定在这个专属实例上的,而不是全局的io对象。另外,你的connection回调函数还漏掉了接收这个关键的socket参数。

修正后的代码

修正后的server.js

var io = require('socket.io').listen(process.env.port||5000);
io.on('connection', function (socket) { // 这里要接收socket参数
    console.log('client connected');
    // 监听当前客户端socket的data事件,而不是全局io的
    socket.on('data', function (data) {
        console.log(`data received is '${data}'`)
    })
});

client.js(无需修改)

let io = require('socket.io-client');
let socket = io.connect("http://localhost:5000/", { reconnection: false });
socket.on('connect', function() {
    console.log('Connected to server');
    socket.emit('data', 'data is emitted !')
});

验证效果

修改后重启服务端和客户端,你就能在服务端控制台看到输出:

client connected
data received is 'data is emitted !'

内容的提问来源于stack exchange,提问作者wawa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 06:15:33