node.js - 如何加入房间里的对手
问题描述
当 X 用户尝试与 Y 用户创建房间时。我这样做:
socket.join(room.roomId);
UserConnectionId.findOne({userId: data.opponentId}).then((connection) => {
//connection.connectionId is user's socket Id
var socketList = io.sockets.server.eio.clients;
if (socketList[connection.connectionId] != undefined){
socketList[connection.connectionId].join(room.roomId);
}
});
但显示此错误:
UnhandledPromiseRejectionWarning: TypeError: socketList[connection.connectionId].join 不是函数
如何通过 socketId 获取套接字对象,以及如何在房间中加入此连接?
解决方案
首先你需要正确处理错误,我不知道socketList[connection.connectionId].join(room.roomId)函数是做什么的。试试这个片段来正确处理错误。然后检查 socketList[connection.connectionId].join(room.roomId) 函数的使用手册
socket.join(room.roomId);
UserConnectionId.findOne({userId: data.opponentId})
.then((connection) => {
//connection.connectionId is user's socket Id
var socketList = io.sockets.server.eio.clients;
if (socketList[connection.connectionId] != undefined){
return socketList[connection.connectionId].join(room.roomId);
}
});
.catch((errors) => {
console.log(errors)
})
推荐阅读
- android - 无法在 jetpack 数据存储类中写入首选项未找到异常
- java - 使用 JPA 表示同一个表的不同实体,有和没有连接
- javascript - 通过输入显示按年/月/周 asp.net core mvc 过滤的数据库中的行
- javascript - 切换按钮保持查询结果的状态并通过单击按钮在不刷新屏幕的情况下更新数据库
- flutter - 提供者 .read() 与 .watch()
- javascript - 从父组件关闭模态
- r - 如何用 data.frame 重写我的数据框转换
- maven - 如何使用 KARATE 从端点保存下载的 ZIP 文件
- asp.net-core - .NET Core - 发布请求不等待 OnAuthorization 完成
- apache-kafka - Kafka Protobuf 控制台消费者序列化异常