【发布时间】:2019-06-02 11:42:23
【问题描述】:
我正在使用 React 和 Express 构建一个简单的 socket.io 应用程序,并且遇到了两个客户端在相互发送数据时遇到问题的问题。
例如:播放器 1 连接到服务器,然后播放器 2。
玩家 1 可以收到玩家 2 的邀请,但在相反的情况下不会。第二个连接到服务器的那个似乎没有收到邀请。
来自玩家 1 的控制台日志:
Sending an invitation to player: 029bdef2-7f1b-43a0-9d3e-02ff79728a6e
Invitation from 029bdef2-7f1b-43a0-9d3e-02ff79728a6e
来自玩家 2 的控制台日志:
Sending an invitation to player: 83a594c4-4dae-47a2-90c4-339e1d55d287
来自服务器控制台的日志:
from: 2ad4f74f-ca78-4e96-80c6-9d3ff810681c
to:
beccb53f-3b8a-4ea6-994e-93eae19df715
from:
beccb53f-3b8a-4ea6-994e-93eae19df715
to:
2ad4f74f-ca78-4e96-80c6-9d3ff810681c
我的客户代码:
invitationHandler = ({ id = null, socketId = null }) => {
console.log('Sending an invitation to player: ', id)
const { socket } = this.props
socket.emit(INVITATION, { id, socketId })
socket.on(INVITATION, ({ id }) => {
console.log('Invitation from ' + id)
})
}
服务器代码:
socket.on(INVITATION, ({ id = null, socketId = null }) => {
console.log('from: ')
console.log(socket.user.id)
console.log('to: ')
console.log(id)
socket.to(socketId).emit(INVITATION, { id: socket.user.id })
})
【问题讨论】:
-
您的客户似乎只在他们发出邀请后才设置他们的邀请处理程序。第二个玩家没有收到邀请可能是因为他们还没有发出邀请,因此还没有办法处理邀请。
-
@daviscodesbugs 它有效,谢谢!现在说得通了。
标签: javascript node.js reactjs express socket.io