【问题标题】:Web server talking to multiple persistent processesWeb 服务器与多个持久进程通信
【发布时间】:2011-04-18 16:42:23
【问题描述】:

我将首先描述我想要实现的功能,然后我认为我的技术问题是什么。

功能:我想为 IGS(Internet Go 服务器)创建一个 HTML/JavaScript 客户端。它类似于 FICS(免费 Internet 国际象棋服务器),因为游戏是通过 telnet 完成的,并且所有图形客户端都只是该原始协议的包装器。我的目标是能够在不添加任何网络浏览器(没有 Java、Flash 等)的情况下进行游戏。

技术问题:我看到的最大问题是服务器端。为了开始游戏,Web 服务器必须打开一个到 IGS 的持久套接字,并使用它来发送和接收数据。 (而且每个玩家都需要一个新的这样的连接。)这与 Web 开发中使用的 CGI 思维方式完全不同。

我想到的一个解决方案是网络服务器为每个玩家分叉一个进程,该进程将管理套接字并通过数据库与网络服务器通信。这听起来不是很吸引人(间接,轮询,呃......)。因此我的问题是:此类问题的标准解决方案是什么?

【问题讨论】:

    标签: web-applications


    【解决方案1】:

    查看Socket.IO (java version) 以通过 http 在客户端和服务器之间发送消息。您需要某种 message bus 来在客户端之间传达移动。

    【讨论】:

    • 如果我理解正确,这意味着浏览器必须运行Java?如果是,那么这正是我不想想要做的事情。
    • 对不起,没有。 Socket.IO 可以使用各种方法并回退到支持的功能。可能的传输是 WebSocket、Adobe Flash Socket、AJAX 长轮询、AJAX 多部分流、Forever Iframe、JSONP 轮询。如果 WebSocket 或 Flash 未启用,ajax 长轮询应该可以工作。
    • D'oh,我点击了你的所有链接,但最重要的一个 :-) 仍然,socket.IO 在浏览器和 Web 服务器之间进行通信时工作,对吗?我不能只打开一个到任意服务器的套接字(除非它支持 socket.IO 的传输模型,而 IGS 不支持)。但是,看来我可以分叉与 IGS 的真实套接字对话的进程,以及与浏览器的 socket.IO 对话,完全跳过 Web 服务器(进程分叉除外)。这是你的意思吗?
    • 经过短暂的测试,一切正常。甚至不需要 fork 进程,因为 node.js 保持所有套接字打开。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-04
    • 2013-06-20
    • 1970-01-01
    • 2015-11-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多