我主要是在寻找安装建议和有关如何进行此操作的指示。我将尽我所能地详尽解释,并指出可能的可行方法。
这样做的目的是创建一个实时浏览器游戏,我发现满足自己需求的最佳方法是使用带有ajax的"长期轮询",这基本上将与服务器建立一个请求,该请求将"挂在那里"直到服务器可以发送一些东西,然后在收到更多数据后重新建立连接。就我的目的而言,这将处理聊天系统以及角色移动,即IE:如果玩家进入同一区域,则客户端的客户将收到响应以通知他们,从而更新浏览器客户端以显示此内容。
上面的代码相对容易实现,我已经为它做了一个测试用例,但是我想对其进行改进,在服务器端,它会运行X倍的循环时间,然后自动超时并发回并空字符串,因此可以建立另一个连接,这是为了防止无限循环并在不应该使用的情况下用完资源。我使用flatfiles,而不是在每个循环周期中查找需要发送到客户端的消息的数据库(我认为这会很昂贵),而是使用flatfiles,如果文件的修改后的时间戳大于发送给客户端的最后一条消息,则存在有新东西要发送。但是,我相信如果每秒执行两次,这也将很昂贵(虽然不比使用mysql数据库要高吗?)。
我的思考过程是不断运行C ++程序(以提高速度),并使用它在内存中非常快地查找新消息,因此,这第四点也给了我额外的好处,那就是能够在内部安装机器人服务器可以控制更实时的感觉/方法的游戏,但是我不知道是否有可能,而且我在Google上的搜索也没有结果。
我最想做的方法是继续使用PHP进行页面的呈现和控制等,并将ajax请求发送到可以处理所有内容的C ++应用程序(将始终运行)实时方面。
CGI违反了上述方法的目的,因为它会在每个请求上创建应用程序的新实例,这既缓慢又恰恰是我所不想要的,我拥有php,并且不想切换一种完美运行的语言对于另一个更合适的方法,PHP(据我所知)不能将内容存储在内存(内存)中,因此第四。
我考虑过的另一种方法是使用php套接字连接到C ++应用程序,尽管我不知道这样做有多可行。 C ++应用程序基本上只需要控制机器人程序(AI)和聊天系统消息。.我绝对不知道如何通过PHP处理机器人程序。
我希望这能充分说明我的意图和目标,因此,如果有人有任何指示或建议,请回复并帮助我,将不胜感激。如果您需要任何其他信息(例如,如果我没有很好地介绍某件事或某些事情),那么我将很乐意尝试更好地解释。
反应需要多快?对于接近实时动作游戏的任何事物,AJAX / Comet都将太慢。开销也确实令人沮丧。
这类事情的前进方向可能是WebSocket,后端有一个自定义服务器。但是我认为这并不意味着您需要借助C [++];瓶颈很可能是网络,而不是服务器处理器的能力。
我正在使用带有简单消息复制系统的Python SocketServer吗?-我的所有游戏逻辑都在客户端,一些复杂的java script面对滞后仍保持了一致的游戏世界?在更复杂的服务器端,我认为脚本语言可能会很好。
WebSocket还没有准备好;没有主流的浏览器实现。同时,我正在使用模仿WebSocket接口的Flash Socket备份。 Flash套接字有其自身的问题,即它们无法协商代理,但是它们速度很快,并希望随着WebSocket的到来,对它们的需求将减少。
您对多线程代码有多熟悉?使用C ++?如果答案不是"非常",那么我担心您可能会咬掉一大块。为什么不利用某些现有的(经过验证的)COMET服务器实现而不是这种准系统方法呢?无论您打算使用什么应用程序,它都应该与comms实现完全分开。