【新人】socket.io自动建立很多连接的问题

直接上代码吧,服务器端:

var express=require('express');
var app=express();
var net=require('net');
var http=require('http').createServer(app);
var io=require('socket.io').listen(http);
var net=require('net');
var nodeServer = new net.Socket();
var aSocket=null;

io.sockets.on('connection', function (socketIO) {
  aSocket=socketIO;
};
nodeServer.on('data', function(data) {
 if(aSocket!=null){
    aSocket.emit('pushToWebClient',useData);
    //客户端断开连接
    aSocket.on('disconnect', function () {
      console.log('DISCONNECTED FROM CLIENT');
    });

  }

客户端:

socket.on('pushToWebClient', function (useData) {


    });

代码截取了部分,过程是:从一个C++写的服务器接受数据,socket.io转发数据给客户端,然后显示到页面上。

接受一会,如果关闭网页,就会出现一堆

DISCONNECTED FROM CLIENT
DISCONNECTED FROM CLIENT
DISCONNECTED FROM CLIENT
DISCONNECTED FROM CLIENT
DISCONNECTED FROM CLIENT
DISCONNECTED FROM CLIENT
DISCONNECTED FROM CLIENT
...(此处省略无数行)

我估计是每次io建立了很多次连接,要怎么才能阻止建立这么多呢?

2个回答

问题解决了,删除掉

aSocket.on('disconnect', function () {
console.log('DISCONNECTED FROM CLIENT');
});

或者把它放出exbuffer就行了,而且再也没有setMaxlistener的提示了。
个人不是很明白原理,可能在于一个个嵌套影响,还有disconnect的事件释放不了sockect,所以打印了很多出来。
这个方法有个问题,就是只能一对一,毕竟把socket设置成了全局变量。
直接换成io.emit???

TDArray
TDArray 这都是我问的啊,0回复惨案现场
3 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐