- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 socket io 构建聊天应用。
当“用户 x”从聊天中断开连接时,我想打印到控制台日志:“再见用户 x”。
为此,我需要将用户名作为参数传递给断开连接事件。
问题是我不知道如何将数据传递给断开连接事件:
socket.on('disconnect', function(){...})
当用户断开连接时自动调用它。
我需要有类似的东西
socket.on('disconnect', function(user_name){
console.log('bye '+user_name);
})
但如果这可能(是吗?)那么我如何在客户端传递此参数(我的情况是 Angular )?
我完整的 socket io server.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 值。
关于javascript - 套接字 io : how to pass paramter to disconnet socket event?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38687864/
有时我们需要创建只有一个参数的简单方法。例如: private boolean isMockedPlayer(Player player) { return player == Player.
我正在尝试使用 Google Cloud Endpoints 构建一个 API。 由于 Cloud Endpoints 不提供除 Google 自己的 OAuth 之外的身份验证,所以我尝试构建自己的
我正在使用 socket io 构建聊天应用。 当“用户 x”从聊天中断开连接时,我想打印到控制台日志:“再见用户 x”。 为此,我需要将用户名作为参数传递给断开连接事件。 问题是我不知道如何将数据传
如何在 Javascript 回调函数中获取用户状态?就像我有一个 Javascript 函数,如下所示进行异步调用。现在在回调函数中我需要访问用户状态。我怎样才能做到这一点?在 Silverligh
如果我尝试从 MySQL 数据库中选择数据库,我会收到一条错误消息:该值不能为 NULL。参数:item(德语为:Der Wert darf nicht NULL sein。参数:item)因此,这意
在 mySQL SELECT 查询中,我想根据 WHERE 子句中的 PDO 绑定(bind)搜索参数条件选择客户端表的行。类似于 WHERE client = :searchStr 有2种情况:A)
我正在尝试使用事件过滤器来减少应用程序使用的主题数量,使用新版本的 spring 云流 (Chelsea.RC1) 中可用的新功能。正在创建具有正确 header 的消息,但是,检查队列中消息的内容,
我是一名优秀的程序员,十分优秀!