Socket.io如何存储房间用户常用的更多信息?

时间:2015-11-16 17:02:41

标签: socket.io

我正在使用socket.io& amp;的NodeJS。两个玩家获得一组盒子,这是一个阵列,当他们完成他们所拥有的东西时,我会记录要求多少套装。

事情是,我想在发出请求时向房间内的两位玩家发送请求计数。我可以在数据库中保存这些信息,但效率非常低,它是一个实时的多人游戏。

因为我必须向房间发出两个玩家的盒子数量,我认为在房间阵列中计算他们的盒数会有所帮助,但无法弄明白。只是提出一个想法:

在socket.io中,房间信息如下:

{ someUniqueSocketId : true, someAnotherSocketId : true}

我希望它像这样:

{someUniqueSocketId : {setCountOfThisPlayer : true} ,
 someAnotherSocketId : {setCountOfThatPlayer : true}}

或许有更好的方式来保存这样的信息。

编辑:

当玩家发送一个startGame信号时,这有效:

function startGame(){
    this.setCount = 0;
    io.to(matchRoom).emit('allSets', allSets);
};

allSets是所有框的数组。 通过this.setCount将框数作为套接字的属性。但是我无法访问其他玩家的属性,所以这不起作用。

2 个答案:

答案 0 :(得分:0)

如果不将其存储在数据库中,您可以将其存储在服务器上的变量中。不推荐因为它吃了mem并且不会扩展。也许您可以利用每个用户的本地存储并以这种方式进行管理。它需要一些编码,但有一些功能可以处理客户端,你可以有一个额外的功能来更新连接到套接字的服务器/播放器。

答案 1 :(得分:0)

您可能需要向服务器添加更多结构,以跟踪socket.io功能之外的播放器和会议室。

以下是如何构建简单房间设置的快速示例。 我保持它非常简单,并沉迷于一些结构捷径,所以它可能不会通过最佳实践审查。

<audio autoplay id="myaudio">
  <source src="http://lel.com/link/to/stream.m3u">
</audio>

<script>
  var audio = document.getElementById("myaudio");
  audio.volume = 0.2;
</script>