Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 实时多人游戏沿边休息api_Node.js_Sockets_Express_Websocket_Socket.io - Fatal编程技术网

Node.js 实时多人游戏沿边休息api

Node.js 实时多人游戏沿边休息api,node.js,sockets,express,websocket,socket.io,Node.js,Sockets,Express,Websocket,Socket.io,我是一名Rails开发人员,刚刚迁移到Node,我决定编写一个由postgres/express.js REST api支持的angular应用程序。到目前为止,我主要使用api进行CRUD操作,但我想在两个玩家访问某个页面时启动一个实时游戏实例(相互挑战)。我正在考虑使用socket.io来实现实时功能 该游戏类似于gameboy上的口袋妖怪,玩家轮流执行某些动作,直到其中一人获胜 我有以下问题: 我应该有一个单独的服务器来使用socket.io处理游戏,还是可以使用与我的API操作相同的服务

我是一名Rails开发人员,刚刚迁移到Node,我决定编写一个由postgres/express.js REST api支持的angular应用程序。到目前为止,我主要使用api进行CRUD操作,但我想在两个玩家访问某个页面时启动一个实时游戏实例(相互挑战)。我正在考虑使用socket.io来实现实时功能

该游戏类似于gameboy上的口袋妖怪,玩家轮流执行某些动作,直到其中一人获胜

我有以下问题:

  • 我应该有一个单独的服务器来使用socket.io处理游戏,还是可以使用与我的API操作相同的服务器

  • 我应该使用Pusher之类的服务,还是可以自己创建架构

  • 如果玩家在游戏中断开连接,我如何确保没有数据丢失

  • 在哪一点(每秒并发连接/请求的数量)我会遇到性能问题?100,1000,10000

  • 谢谢

  • 如果实时逻辑与CRUD内容密切相关(即,实时事件是写入API的直接结果),并且您希望系统的两个方面都能得到同等的使用,那么我会将它们放在同一台服务器上

  • 我强烈建议尽可能使用实时推送服务(免责声明:我为Fanout.io工作)。它会更简单,也可能更便宜

  • 确保数据不会丢失的关键是在发送之前将数据保存在服务器上。不要依赖实时层来实现持久性(您可能犯的最大错误)。当客户端重新连接时,它可以通过普通API请求可能丢失的数据。所以,只要把你的积垢材料正确,然后层实时事件的顶部。您可以通过这种方式创建一个非常具有网络弹性的服务

  • 您应该能够不费吹灰之力就获得几百个并发连接。超越这一点需要进行建筑规划。当然,如果您委托推送服务,那么您不必担心这一点,至少在实时部分是这样


  • 感谢您的回复,架构规划具体包括哪些内容?我的意思是,您可能需要购买更大的服务器,利用每台服务器的多个核心(运行多个节点实例?),在多台服务器之间实现负载平衡,优化网络交互以实现每台服务器更高的吞吐量,等等。