我不确定这是否是socketio客户端或服务器问题,但每次我导航到该页面并重新订阅同一个房间时,我都会收到一条加号消息。每次离开页面时我都会放一个休息室。
后端:
socket.on('subscribe', function(room){
logger.info("subscribing to room", data.room);
socket.join(room);
});
socket.on('unsubscribe', function(room){
logger.info("unsubscribing to room");
socket.leave(room);
});
socket.on('update', function(msg){
io.sockets.to("room1").emit('udpate', msg);
});
在我的角度应用程序中,我在控制器中有这个
function Controller(WebSocketService){
var vm = this;
function update(){
WebSocketService.emit('update', "update message");
}
vm.WebSocketService.emit('subscribe', "room1");
vm.WebSocketService.on('update', function(update){
console.log("Update received");
});
$scope.$on("$destroy", function() {
vm.WebSocketService.emit('unsubscribe', "room1");
});
}
当我第一次导航到页面时,此工作正常。但是,当我导航回主菜单,然后使用此控制器导航回此页面并发送更新...在后端我只看到1个套接字消息发送但在前端I' m看到"收到更新"两次。每当我离开然后返回并触发我的更新功能时,我都会收到许多重复的消息。
我检查了后端房间内用户的长度,只是1.我的socketio客户端是否也需要以某种方式取消订阅房间?
由于