我正在构建一个应用程序,允许您加入游戏,然后从游戏中的其他玩家那里接收更新。在添加房间功能之前,套接字可以正常工作,但是现在客户端不再收到广播到各自房间的消息。
服务器代码:
io.on('connection', client => {
// JOIN GAME
client.on('join-game', ({gameId, playerId}) => {
console.log(gameId)
client.join('new-room', () => {
io.sockets.in('new-room').emit('player-joined-game', 'Is this thing on?);
})
});
客户代码:
componentDidMount = () => {
const socket = socketIOClient('localhost:5000');
socket.on('player-joined-game', game => {
console.log(game)
})
}
服务器收到消息,但客户端不打印“这东西在吗?”
答案 0 :(得分:2)
显然,您的客户可能没有加入任何游戏,因为您的客户没有发出“加入游戏”消息。 加, 您错过了网址字符串上的“ http://”。
您可以在客户端尝试以下操作吗?
componentDidMount = () => {
const socket = socketIOClient('http://localhost:5000');
socket.on('player-joined-game', game => {
console.log(game)
});
socket.emit('join-game',{gameId:'game1',playerId:'player1'});
}
答案 1 :(得分:0)
事实证明,这是由于每次我从客户端向服务器发送“加入会议室”消息时,都创建了一个新的套接字实例引起的。这意味着每次我加入房间时,我都会在房间中添加一个新插座。通过将客户端套接字声明移至常量文件并将其用于我的所有socketIO使用,可以解决此问题。