让客户端远程启动node js游戏服务器,每种方法的优缺点

问题描述

我最近开发了一个小型浏览器游戏。它是用 js 编写的,并连接到远程服务器,该服务器运行节点 js 服务器以通过 websocket 控制某些游戏方面(通过 apache 路由到本地节点服务器/websocket,端口 8081)。我的问题是如何管理远程节点进程。

我显然可以通过 ssh 连接到服务器并运行“node gameserver.js”,它会为客户端连接运行,但这不是一个好的解决方案。

为了便于论证,我们假设所有客户端都连接到一个节点游戏服务器,并且流量很少,因此 90% 的时间都没有人在玩。

我目前的hacky解决方案是当客户端加入时,运行一些PHP来检查服务器是否正在运行:

  $host = '127.0.0.1'; 
     $port = 8081; 
     $waitTimeoutInSeconds = 1; 
     if($fp = fsockopen($host,$port,$errCode,$errStr,$waitTimeoutInSeconds)){   
        //server = Online
     } else {
        //server = Offline
      exec("node gameserver.js");
     }

这确实有效,虽然它在服务器离线时确实需要刷新页面,但是运行 exec 给了我heeby jeebys,我知道它的服务器端,但我不喜欢它。

我的问题基本上是我对此有哪些选择。像这样的游戏服务器通常是 24/7 全天候运行吗? apache 可以检测到有人加入游戏并发出信号吗?是否有任何其他进程管理器可以检测到 websocket 加入进来? 24/7 全天候运行的 websocket 是否存在任何安全隐患?

我对这一切都不熟悉,愿意接受建议和阅读材料

非常感谢

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)