刷新页面,socketio会请求多次,为什么?发送成功后,有木有办法就让它停下来。
发布于 12 年前 作者 fyddaben 11195 次浏览 最后一次编辑是 8 年前

如题。求解决

8 回复

发送成功后你还想让它停下来?你具体选的是什么传输协议啊?

  • 像websocket是一直保持这个连接的
  • 其它的长连接形式,也是在一个请求结束后立即发出另一个请求建立连接的

过程就是从服务器发送数据到客户端,客户端接收一次成功就好了啊。可是现在,socket会emit多次。造成,数据重复出现。

那就是你的代码有问题了,检查下吧,正常情况不会emit多次的

服务器端:

this.io.on('connection', function (socket) {
            socket.emit("connect","helloworkd");
            socket.on('room', function (data) {
                console.log("收到消息"+data);
                socket.broadcast.emit('down',data);
            });

        });

客户端:

var socket = io.connect('http://127.0.0.1:3001/');
   socket.on("down"+roomid,function(array){
      console.log(array);//这里会输出多次       

}); socket.emit(“room”,“hello world”);

建立连接后,有时候发送一次数据,有时候发送多次。多次 的时候居多。是不是还要配置什么啊????

找到错误原因了,我每次刷新页面,服务端都会io.on(‘connection’…)一次。从而不断的累加。越来越多。

fyddaben 怎么解决的,发下方法,分享下

用once方法代替on方法就行了,once方法只会发出一次消息

把io.on(‘connection’…)服务端的这个连接代码,在启动服务器的时候,执行一次就可以了,在里面写具体的事件内容。把这个代码放在app.js里面执行。我开始的时候,想封装成一个模块,每次开一聊天室,执行一次模块,造成connnection不断增多。

回到顶部