【问题标题】:Is django-channels suitable for real time game?django-channels 适合实时游戏吗?
【发布时间】:2017-08-05 10:53:28
【问题描述】:

我想做一个实时游戏,我想使用 NodeJS-SocketIO 或 aiohttp,直到我遇到了 django-channels,然后我阅读了它的文档。

这是一个很好的模块

问题

  1. django-channels 适合实时游戏吗?
  2. django-channels 比 aiohttp/nodejs-socketio 有优势吗?
  3. 是否适用于所有客户端(android、IOS、桌面)?

【问题讨论】:

    标签: python django django-channels


    【解决方案1】:

    首先,通道只是一个异步任务队列。它与芹菜非常相似,主要区别在于性能和可靠性。 Channels 比 celery 快,但 celery 更可靠。为了给它添加更多上下文,通道只执行一次任务(不管它是失败还是成功)。另一方面,celery 会执行任务,直到任务失败一定次数或成功。

    现在,回答您的问题并举这个例子。

    假设您要使用渠道和构建部落冲突 网络套接字。

    1) 是的,频道适合实时游戏,只要你为异步队列中的任务失败的情况编写自定义逻辑。

    网络套接字将通过通道发送和接收消息。因此,如果其中一个玩家在战场上部署部队的请求没有成功发送到服务器,您需要编写自定义逻辑来处理这种情况(例如在将请求转储之前至少尝试 3 次)任务队列)。

    2) 并非如此。它们几乎相同。最终,您将不得不使用网络套接字和一个队列,您可以在其中同时触发/接收消息。

    3) 是的,您必须在您的应用程序(Android、iOS、桌面)中实现一个网络套接字,该套接字将通过通道从后端发送/接收消息。

    【讨论】:

      猜你喜欢
      • 2016-09-20
      • 1970-01-01
      • 2017-09-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-15
      相关资源
      最近更新 更多