gpt4 book ai didi

javascript - 如何将 WebSocket 连接与 Socket.io 事件和 Koa Rest api 结合使用?

转载 作者:太空宇宙 更新时间:2023-11-04 00:08:21 25 4
gpt4 key购买 nike

我正在制作一款多人游戏,该游戏使用 websockets 在所有连接的玩家之间共享游戏状态。

我决定将 socket.io 与 koa 一起使用,现在我面临以下问题。

首先,当用户连接到服务器时,会创建一个新玩家。

const playersMeta = {}

io.on('connect', socket => {
const playerId = uniqid() // Creates a new unique id for a player
playersMeta[socket.id] = { playerId } // Stores the players id using the socket.id as key

socket.on('disconnect', () => {
delete playersMeta[playerId]
})
})

问题是玩家需要知道服务器分配给它的唯一 ID。原因是有一个游戏状态告诉每个连接的玩家所有实体在哪里。摄像机跟随您进入游戏时创建的玩家,这就是为什么我需要知道摄像机应该跟随哪个玩家。

我可以创建一个新的 socket.io 事件,然后播放器发出一个事件,返回您想要的 id,但它看起来变得太复杂了。

事件很适合在不同客户端之间实时同步,数据也需要更改,但我确信玩家的 ID 不会更改。

也许最好只创建一个 api 休息端点来获取此数据。我正在使用 Koa,我不确定是否可以使用相同的 websocket 连接而不是使用 http。

最佳答案

你不能将它发送到同一个套接字吗?

const playersMeta = {}

io.on('connect', socket => {
const playerId = uniqid() // Creates a new unique id for a player
playersMeta[socket.id] = { playerId } // Stores the players id using the socket.id as key
socket.emit('connected', { serverId: 'foo'});
socket.on('disconnect', () => {
delete playersMeta[playerId]
})
});

在您的客户端上:

var socket = io('http://server');
socket.on('connected', function (data) {
console.log(data); // { serverId: 'foo'}
// do whatever you want with the servid
});

关于javascript - 如何将 WebSocket 连接与 Socket.io 事件和 Koa Rest api 结合使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51121861/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com