django-channels是否适合实时游戏?

had*_*adi 7 python django django-channels

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

这是一个很好的模块

问题:

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

Pra*_*jal 10

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

现在,来回答你的问题并以这个例子为例。

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

1) 是的,channels 适用于实时游戏,只要您为异步队列中的任务失败的情况编写自定义逻辑即可。

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

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

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