Tib*_*Tib 6 javascript sockets node.js socket.io
在 socket.io 1.3.7 上,如何在断开连接事件时获取套接字的房间?
socket.on('disconnect', function() {
var currentRoom = ???
socket.broadcast.in(currentRoom).emit('user:left', socket.id);
});
Run Code Online (Sandbox Code Playgroud)
Gar*_*rre 12
在 'disconnect' 事件发生时房间已经离开,使用 'disconnecting' 事件,当房间仍然可以访问时,该事件将在 'disconnect' 事件发生之前发出。
它是这样工作的:
socket.on('disconnecting', function(){
var self = this;
var rooms = Object.keys(self.rooms);
rooms.forEach(function(room){
self.to(room).emit('user left', self.id + 'left');
});
});
Run Code Online (Sandbox Code Playgroud)
我通过在连接上设置 currentRoomId 变量解决了我的问题,因此我可以在断开连接时访问它。
io.sockets.on('connection', function(socket) {
var currentRoomId;
socket.on('join', function(roomId) {
socket.join(roomId);
currentRoomId = roomId;
});
socket.on('disconnect', function() {
socket.broadcast.in(currentRoomId).emit('user:left', socket.id);
});
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4670 次 |
| 最近记录: |