微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 socket.io

如何解决使用 socket.io

我正在从事一个教育项目 - 在线跳棋(跳棋)游戏,但我仍然对 socket.io 感觉不够舒服。

我想要做的是 - 当一个玩家想要邀请另一个玩家到游戏室玩时,使用 socket.io 我想将两个玩家从大厅发送到游戏室。只有他们会被送到游戏室,这意味着即使大厅内有数百名玩家,也只有想要玩的 2 名玩家会被重定向到游戏室。

当玩家 1 单击按钮时,我将他的详细信息和玩家 2 的详细信息(玩家 1 选择与之对抗的玩家)发送到服务器,如下所示:

socket.emit("SendplayersToRoom",{ player1,player2},socket.id)

socket.id 参数是玩家 1 的 socket.id。玩家 2 是一个对象,在 player2.id 中已经包含他的套接字 ID。

接下来,我在服务器端接收信息,然后我尝试仅将其发送给玩家 1 和 2,如下所示:

socket.on("SendplayersToRoom",({player1,id) => {
        io.to(id).to(player2.id).emit("sendToRoom");
    })

最后,我在客户端收到信息,它应该将两个玩家重定向到他们可以玩的新房间:

socket.on("sendToRoom",() => {
        location.href = `/game-room?p1=${player1.username}&p2=${player2.username}`                
    })

这段代码实际发生的情况是,玩家 1(发起游戏邀请的人)被送到没有玩家 2 的房间,玩家 2 呆在大厅里,好像什么也没发生。

在这里错过了什么?我做错了什么?

解决方法

您的房间有一个唯一的 ID。确保两个插座都连接它。 socket.join(id) - 将它用于您的两个套接字。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。