django-channels 是否适合实时游戏?
Is django-channels suitable for real time game?
我想做一个实时游戏,我想用 NodeJS-SocketIO 或 aiohttp,直到我遇到了 django-channels,然后我阅读了它的文档。
这是一个很好的模块
问题:
- django-channels 是否适合实时游戏?
- django-channels 比 aiohttp/nodejs-socketio 有优势吗?
- 是否适合所有客户端(android、IOS、桌面)?
首先,通道不过是一个异步任务队列。它与芹菜非常相似,主要区别在于性能和可靠性。
通道比芹菜快,但芹菜更可靠。为了向其添加更多上下文,通道仅执行一次任务(无论它是失败还是成功)。另一方面,celery 执行任务直到任务失败一定次数或成功。
现在,开始回答您的问题并举个例子。
Suppose you were to build clash of clans using channels &
web-sockets.
1) 是的,通道适合实时游戏,只要你为异步队列中的任务失败的情况编写自定义逻辑。
网络套接字将通过通道发送和接收消息。因此,如果其中一名玩家在战场上部署部队的请求没有成功发送到服务器,您需要编写自定义逻辑来处理这种情况(比如在将请求转出之前至少尝试 3 次)任务队列)。
2) 不是真的。它们几乎相同。最终,您将不得不使用网络套接字和队列,您可以在其中同时 fire/receive 消息。
3) 是的,您必须在您的应用程序(android、iOS、桌面)中实现一个网络套接字,这将 send/receive来自后端的消息。
我想做一个实时游戏,我想用 NodeJS-SocketIO 或 aiohttp,直到我遇到了 django-channels,然后我阅读了它的文档。
这是一个很好的模块
问题:
- django-channels 是否适合实时游戏?
- django-channels 比 aiohttp/nodejs-socketio 有优势吗?
- 是否适合所有客户端(android、IOS、桌面)?
首先,通道不过是一个异步任务队列。它与芹菜非常相似,主要区别在于性能和可靠性。 通道比芹菜快,但芹菜更可靠。为了向其添加更多上下文,通道仅执行一次任务(无论它是失败还是成功)。另一方面,celery 执行任务直到任务失败一定次数或成功。
现在,开始回答您的问题并举个例子。
Suppose you were to build clash of clans using channels & web-sockets.
1) 是的,通道适合实时游戏,只要你为异步队列中的任务失败的情况编写自定义逻辑。
网络套接字将通过通道发送和接收消息。因此,如果其中一名玩家在战场上部署部队的请求没有成功发送到服务器,您需要编写自定义逻辑来处理这种情况(比如在将请求转出之前至少尝试 3 次)任务队列)。
2) 不是真的。它们几乎相同。最终,您将不得不使用网络套接字和队列,您可以在其中同时 fire/receive 消息。
3) 是的,您必须在您的应用程序(android、iOS、桌面)中实现一个网络套接字,这将 send/receive来自后端的消息。