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

标签 python django django-channels

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

这是一个很好的模块

问题:

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

最佳答案

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

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

Suppose you were to build clash of clans using channels & web-sockets.

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

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

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

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

关于python - django-channels 是否适合实时游戏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45521079/

相关文章:

python - IOError : request data read error

python - 如何在表单中获取 session ?

websocket - 使用 Web 套接字向 Django channel 中的多个组发送消息

Django Channels 2.x 还是 Ajax?

python - 连接 PDF 从另一个 python 脚本调用 join.py OSX 脚本并传递参数

具有多种模式的 Python Regex sub()

python - tokyo-python 安装问题

python - 在哪里可以看到可以传递给 scipy.signal.cwt 的内置小波函数列表?

python - 在 Django 中创建了一个新模型。但它没有出现在数据库中

python - 类型错误 : __call__() missing 1 required positional argument: 'send' Django