Socket.IO客户端库提供了“欢迎socket.io”消息(Socket.IO client l

2019-06-26 21:50发布

过了一段时间我试着用Node.js和受socket.IO再次努力,但预计它没有工作:

我的设置

  1. 下载从GitHub的Node.js和它编译Debian上挤压运行我的外部Web服务器
  2. 创建一个目录Node.js的项目
  3. 与NPM新增socket.io本地
  4. 创建socketIO_server.js和刚添加的这一行代码:

     var socketIO = require('socket.io').listen(8000); 
  5. 开始socketIO_server.js和控制台日志说:“信息 - socket.io开始”

  6. 打开HTTP://domain.tld:8000给出了消息“欢迎socket.io”

问题

当我尝试通过访问客户端库的http://domain.tld:8000 / socket.io / socket.io.js这也给消息“欢迎socket.io”,但控制台日志显示“提供静态内容/socket.io.js”。 我不知道为什么会这样! 我虽然nginx的服务器上运行并行的原因这个问题,但停止服务器没有任何改变。

感谢您的阅读和帮助!

Answer 1:

这是一个承诺的的NodeJS在最近的变化EventEmitter LIB制造引起的。 我对socket.io打开的问题。

https://github.com/LearnBoost/socket.io/issues/987

UPDATE

此问题已被固定为socket.io 0.9.12的

修复: https://github.com/LearnBoost/socket.io/blob/0.9.12/lib/manager.js#L116

提交: https://github.com/LearnBoost/socket.io/commit/0d3313f536d0231932dd6617db449a071f5bc03a


端口监听,当不能满足socket.io.js。 (节点0.9.1预,socket.io 0.9.9)

由于最近承诺节点,可以不再拼接事件侦听器。 这将导致socket.io试图访问该socket.io.js客户端文件的原始事件侦听器不会被删除时显示欢迎信息。

例如破损:

var socketIO = require('socket.io').listen(8000);

这打破因道路节点0.9.1预改变,你可以访问的侦听EventEmitter LIB的方式。

提交的NodeJS打破socket.io

让EventEmitter.listeners(事件)返回听众数组,而不是数组本身的副本。

EventEmitter.prototype.listeners = function(type) {
   if (!isArray(this._events[type])) {
     this._events[type] = [this._events[type]];
   }        
-  return this._events[type];   
+  return this._events[type].slice(0);
};

https://github.com/joyent/node/commit/20e12e4be37f394672c001fdb9b05c0275731901#L1R245

相对socket.io代码:

// reset listeners
this.oldListeners = server.listeners('request').splice(0);

https://github.com/LearnBoost/socket.io/blob/master/lib/manager.js#L115



Answer 2:

我前几天就遇到了这个问题。 不得不降级socket.io到v0.8.7它工作得很好。



文章来源: Socket.IO client library gives “welcome to socket.io” message