如何配置 websocket 服务器以与 web 服务器一起运行?

如何配置 websocket 服务器以与 web 服务器一起运行?

我目前有一个 Apache2 在端口 80 上监听,还有一个自制的游戏服务器在更高的未注册端口 (50214) 上运行。我正在用 Javascript 重写游戏,并计划通过端口 80 上的 websockets 发送网络通信,以绕过许多公司和大学设置的防火墙。

我该如何配置 websocket 服务器来监听 80 上的 websocket 连接,然后解压并转发到监听 50214 上的游戏服务器,而不会干扰 apache?

我应该使用哪种 websocket 服务器实现?通常是如何做到的?

答案1

您不能让两个服务都监听同一个端口,因此您需要第二个 IP 地址。

老实说,如果我要实现这一点,我会在前端使用 apache,使用 mod_proxy 将您的游戏请求代理到只监听本地主机的自定义服务器。这样就无需拥有两个 IP 地址。

答案2

一个想法:在现有的 apache 实例中设置虚拟主机,并在其中设置 AJAX 响应器,使用 PHP、Python 或 [您最喜欢的语言] 编写。您的 javascript 客户端代码会对您的 apache vhost 进行 AJAX 调用,而 AJAX 响应器会对您的其他服务器进行必要的调用以满足客户端请求。

答案3

看一下反向 HTTP 代理

它几乎只是将不同的请求重定向到特定的端口,例如:

  • 让 apache 监听端口 8000
  • 你最喜欢的 websocket 服务器监听 8001
  • 让你的反向 http 代理工具监听端口 80,并重定向example.com/ws到端口 8001,其余端口重定向到 8000

例如节点 http 代理,它非常容易使用,甚至还有一个简单的 websockets 示例socket.io(当然,您可以使用任何您喜欢的 ws 服务器)。

编辑:另外,mod_proxy作为替代方案,apache 的模块可能值得一试(较新版本的 apache 也支持模块mod_proxy_wstunnel)。

相关内容