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

运行socket.io代码报TypeError: socket.listen is not a function错误咨询

错误原因
  • 你使用的是socket.io@3.0.0及以上的新版本,该版本早已废弃了旧版本中的listen()静态方法,调用socketio.listen()自然会抛出方法不存在的类型错误。
  • 代码还存在一处逻辑错误:socket.on('disconnect')的监听代码写在了connection事件回调的外部,全局作用域下不存在socket实例,即使修复了listen方法的问题,运行后也会抛出新的报错。
修复方案

推荐直接适配新版本的语法规范,修改两处代码即可:

  1. 将socket.io的初始化逻辑改为const io = socketio(server)
  2. 将disconnect事件的监听逻辑移到connection事件的回调函数内部,绑定到连接成功生成的socket实例上。

修正后的完整代码如下:

const http = require('http');
const socketio = require('socket.io');
const server = http.createServer((req, res) => {
  res.end('hey!');
});

server.listen(3000);

// 替换原listen写法,使用新版本初始化语法
const io = socketio(server);

io.sockets.on('connection', (socket) => {
  console.log('Kullanıcı bağlandı.');
  // 将disconnect监听移到回调内部,绑定当前连接的socket实例
  socket.on('disconnect', () => {
    console.log('Kullanıcı ayrıldı.');
  });
});

如果你需要保留原listen()写法,也可以降级socket.io到2.x版本,执行命令npm install socket.io@2即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 07:09:03