Django 在线游戏最佳实践

Django 在线游戏最佳实践,django,web-applications,client-server,Django,Web Applications,Client Server,我正在开发一个基于django的MMO,我想知道服务器-客户端通信的最佳方式是什么。我找到的解决办法是: 定期AJAX调用 保持连接活动并通过它发送数据 以后编辑: 这将包括“你有一条消息”、“用户x攻击了你”、“你到x的传输已经到达”等等。它们的数量可能会增加(大约1/秒),但对于一个典型的用户来说,它们不应该达到1/分钟还有第三种技术涉及“挂起”查询: 客户端请求更新页面(或其他内容) 服务器没有立即应答 在请求超时之前的某个时候,服务器中会有一个状态更新,服务器最终会回答客户机,然后

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

  • 定期AJAX调用
  • 保持连接活动并通过它发送数据
以后编辑:


这将包括“你有一条消息”、“用户x攻击了你”、“你到x的传输已经到达”等等。它们的数量可能会增加(大约1/秒),但对于一个典型的用户来说,它们不应该达到1/分钟

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

  • 客户端请求更新页面(或其他内容)
  • 服务器没有立即应答
  • 在请求超时之前的某个时候,服务器中会有一个状态更新,服务器最终会回答客户机,然后客户机可以进行更新
  • 如果在更新期内没有什么新的消息要告诉客户机,那么服务器会在超时之前以“no news”消息作出响应,客户机会启动另一个“挂起”请求
优点:

  • 客户端不必做Ajax。您甚至可以像这样使常规HTML页面“交互式”
  • 可能没有那么多毫无意义的投票流量
缺点:

  • 服务器需要保持更多活动连接处于打开状态,并在每个超时期间至少为它们提供一次服务。而且
  • 根据服务器代码对多线程的支持程度(PHP是否提供了帮助?),编写代码可能比AJAX响应处理更困难

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


您可能想看看

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


在不了解MMO游戏需求的情况下,我们无法帮助您说出最佳实践。事件在客户端显示前所需的时间是多少,您有多少个事件/时间?