问题描述
我最近开发了一个小型浏览器游戏。它是用 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 (将#修改为@)