代码之家  ›  专栏  ›  技术社区  ›  Gabi Purcaru BornCoder

在线游戏最佳实践

  •  0
  • Gabi Purcaru BornCoder  · 技术社区  · 15 年前

    我正在开发一个基于django的MMO,我想知道什么是服务器客户机通信的最佳方式。我找到的解决方案是:

    • 定期Ajax调用
    • 保持连接活动并通过它发送数据

    后期编辑:

    这包括“你有一条信息”、“X用户攻击了你”、“你到X的交通工具已经到达”等等。它们可以以数字的形式增长(比如1/秒),但是对于一个典型的用户来说,它们不应该达到1/分钟。

    3 回复  |  直到 11 年前
        1
  •  -1
  •   Carl Smotricz    15 年前

    还有第三种技术涉及“挂起”查询:

    • 客户机请求更新页面(或其他)
    • 服务器没有立即响应
    • 在请求超时之前的某个时候,服务器中会有一个状态更新,服务器最终会响应客户机,然后客户机可以更新。
    • 如果在更新期间没有什么新消息可以告诉客户机,那么服务器会在超时前用“无新闻”消息响应,客户机会启动另一个“挂起”请求。

    优势:

    • 客户机不需要做Ajax。你甚至可以让普通的HTML页面像这样“交互”。
    • 可能不会有那么多毫无意义的投票流量。

    缺点:

    • 服务器需要保持更多的活动连接处于打开状态,并在每个超时期间至少为它们提供一次服务。也,
    • 取决于服务器代码支持多线程的程度(PHP是否提供了任何帮助?),编写代码可能比Ajax响应处理更困难。
        2
  •  0
  •   David    15 年前

    不确定它是否适用于您要查找的内容,但有一个非常好的实例,即使用node.js进行轻量级服务器客户端通信,用于简单的聊天服务:

    http://chat.nodejs.org/

        3
  •  0
  •   Anto    11 年前

    你可能想看看 crossbar

    crossbar.io是一个开源服务器软件,允许开发人员 创建由应用程序组件组成的分布式系统 松耦合,实时(软)通信,可以 以不同语言实现

    推荐文章