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

Node.js建立WebRTC连接时出现EADDRINUSE端口占用报错如何解决

错误核心原因

EADDRINUSE 错误标识你Node.js服务尝试绑定的WebRTC端口2361、1236已经被当前设备上的其他进程占用,后续的未捕获错误抛出是因为代码未对socket绑定失败的error事件做监听处理。

可行解决方案
  • 终止占用对应端口的进程
    • Linux/macOS环境执行命令查找占用端口的进程PID:lsof -i:2361,同理执行lsof -i:1236查找1236端口的占用进程,获取到PID后执行kill -9 <替换为对应PID>终止进程即可释放端口。
    • Windows环境执行命令查找占用端口的进程PID:netstat -ano | findstr "2361",同理查找1236端口的占用进程,获取到PID后执行taskkill /f /pid <替换为对应PID>终止进程。
  • 修改WebRTC服务端口配置为动态分配
    不要在代码中硬编码固定端口作为WebRTC绑定端口,将端口配置项设置为0即可让操作系统自动分配当前可用的空闲端口,从根源避免固定端口冲突问题。
  • 添加socket错误事件兜底处理
    在socket实例上添加error事件监听,避免端口绑定失败直接抛出未捕获错误导致服务崩溃,可参考代码逻辑:
    rtcSocket.on('error', (err) => {
      if (err.code === 'EADDRINUSE') {
        console.log(`端口${err.port}被占用,自动切换空闲端口重试`);
        // 此处可添加重试绑定逻辑,自动使用其他端口
      }
    })
    
  • 本地调试场景快速解决
    如果是多次重启Node服务导致端口未及时释放的情况,等待10-30秒待TCP连接超时释放后再重启服务即可,无需额外操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 23:27:05