刷新页面,socketio会请求多次,为什么?发送成功后,有木有办法就让它停下来。
如题。求解决
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不断增多。