socket-io:如何将参数传递给disconnet套接字事件
socket io: how to pass paramter to disconnet socket event?
我正在使用socket-io构建聊天应用程序。
当"用户x"退出聊天时,我想打印到控制台日志:"再见用户x"。
为此,我需要将user_name作为参数传递给disconnect事件。
问题是我不知道如何将数据传递给断开连接事件:
socket.on('disconnect', function(){...})
当用户断开连接时,它会被自动调用。
我想要像一样的东西
socket.on('disconnect', function(user_name){
console.log('bye '+user_name);
})
但如果这是可能的(是吗?),那么我如何在客户端传递这个参数(我的情况是,角度)?
下面是我完整的socketioserver.js代码。
io.on('connection', function(socket){
io.emit('chat_message', "welcome");
socket.on('room', function(room) {
socket.join(room);
});
socket.on('chat_message', function(data){
socket.broadcast.to(data.room).emit('chat_message',data.msg);
});
socket.on('info_message', function(data){
socket.broadcast.to(data.room).emit('info_message',data.msg);
});
socket.on('disconnect', function(){
console.log('bye '+socket.id);
io.emit('chat message', "Bye");
});
});
不能将数据传递给断开连接事件。但是,您可以在较早的时候将自己的属性附加到socket
对象,也可以保留带有附加信息的套接字映射。
您只需要确保服务器知道每个套接字的用户名(我无法从您的问题中判断用户名是客户端还是服务器端的数据)。然后,您可以将它作为属性附加到套接字对象。完成此操作后,当您获得断开连接事件时,您可以查看正在断开连接的套接字上的属性。
因此,无论用户名信息来自哪里,当服务器知道它是什么时,您都可以在套接字对象上设置该属性,然后您可以为断开连接执行此操作:
socket.on('disconnect', function(){
console.log('bye ' + socket.user_name);
});
或者,如果用户名在cookie中,则可以通过解析socket.handshake.headers.cookie
随时获取该cookie值。
相关文章:
- 如何使用HTML5与UDP套接字通信
- 在node.js中写入ECONNRESET错误和套接字连接检查
- java,javascript签名的小程序(文件选择,ftp上传)安全性/套接字异常
- 套接字服务器向客户端广播,但不从两者接收
- 如何确定套接字中的变量是否匹配
- 如何通过网络套接字连接到树莓派上的Mosquitto经纪人
- 快速的套接字 io 实例/中间件
- PHP:Web套接字和html 5
- 无法从客户端发出套接字消息
- STOMP web套接字回调不'不起作用
- Will my'新对象'在套接字断开连接时被垃圾收集
- 套接字服务器在本地获得500毫秒的往返时间
- 将服务器托管的Web应用程序连接到本地Web套接字
- 通过套接字发送画布元素,JS中的最大堆栈大小
- 如何使用套接字将node.js与ada连接起来
- 套接字io客户端网络::ERR_CONNECTION_REFUSED
- 节点.js设置套接字 ID
- node.js 需要太多的 TCP 套接字
- 从一个套接字发出两个事件
- socket-io:如何将参数传递给disconnet套接字事件