Javascript 如何使用SokKe.IO事件和膝关节炎API的WebSoT连接?

Javascript 如何使用SokKe.IO事件和膝关节炎API的WebSoT连接?,javascript,node.js,rest,websocket,koa,Javascript,Node.js,Rest,Websocket,Koa,我正在制作一个多人游戏,它使用WebSocket在所有连接的玩家之间共享游戏状态 我决定使用SOCKIO与膝关节炎,现在我面临以下问题。 首先,当用户连接到服务器时,将创建一个新的播放器 const playersMeta = {} io.on('connect', socket => { const playerId = uniqid() // Creates a new unique id for a player playersMeta[socket.id] = {

我正在制作一个多人游戏,它使用WebSocket在所有连接的玩家之间共享游戏状态

我决定使用SOCKIO与膝关节炎,现在我面临以下问题。 首先,当用户连接到服务器时,将创建一个新的播放器

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 rest端点来获取这些数据。我使用的是膝关节炎,我不确定是否可以使用同一个WebSocket连接而不是使用http.< /p> 不能把它直接发射到同一个套接字吗?
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
  });

问题是玩家需要知道服务器分配给它的唯一id。
为什么?主要是为了知道摄像机应该跟随哪个玩家,我只是更新了问题,以便更好地解释这一部分。