python 如何使用Django频道创建游戏大厅和配对

xzv2uavs  于 2023-04-19  发布在  Python
关注(0)|答案(1)|浏览(173)

我正在使用Django通道来创建一个2人游戏,如井字游戏或跳棋。
我的主要问题是如何保存加入大厅等待配对的玩家的状态。这是我需要在通道消费者的connect方法中做的事情吗?如果不是,如果这里的方法是什么?

wfypjpf4

wfypjpf41#

WebSocket应该对客户端发送的信息做出React,而不是运行不断检查用户或数据库条目的循环。我们需要在www.example.com中consumers.py实现WebsocketConsumer类的新类,但这是一个'QueueManager' websocket,用于管理我们的队列并为'GameManager' websocket分派初始join命令。
我们的玩家需要通过向'QueueManager' WebSocket发送消息开始。如果玩家已经登录,它会发送一个带有其ID的'new join'命令。如果游戏允许客人,我们会在连接时生成新的ID。如果游戏房间打开或玩家在房间里等待,'QueueManager' websocket会发送一个命令到'join room integer'。当玩家的代码看到这一点时,它向“游戏管理器”WebSocket字发送命令,告诉它将要加入哪个房间。
如果没有可用的空间,告诉用户'no room',然后使用数据库模型打开一个队列,其中每个主键都是常量,字段告诉我们队列中有多少用户。每次添加到该队列时,你创建一个不同的数据库模型,它有一个唯一的数据库主键,其值等于它们在队列中的位置。当玩家收到“没有空间”时,向“没有空间”发送命令。QueueManager' WebSocket 'checking room'例如每隔10秒的时间。当有新房间打开时,'QueueManager' WebSocket调度'join room integer'命令信号,并通过递减具有恒定主键的数据库模型中的用户总数,遍历具有唯一主键的所有用户数据库模型并更新其userID,将所有用户在队列中向前移动一个位置字段以包含列表中的下一个用户ID。请记住,这些数据库模型的唯一主键链接到以0或1开头的用户总数,该用户总数保存在具有始终可以访问的常量主键的数据库模型中。

相关问题