CNode

刷新页面,socketio会请求多次,为什么?发送成功后,有木有办法就让它停下来。

Ffyddaben发布于13 年前最后回复13 年前8 回复11951 浏览0 收藏

如题。求解决

查看回复

回复 (8)

S
sumory#1·13 年前

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

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

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

S
sumory#3·13 年前

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

F
fyddaben#4·13 年前

服务器端:

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");

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

F
fyddaben#5·13 年前

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

X
xiaosong#6·13 年前

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

N
neavo#7·13 年前

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

F
fyddaben#8·13 年前

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

参与回复
登录后即可参与回复。登录