我希望限制在一个房间的用户数量为2,因为我正在做一个插座游戏,两个玩家可以玩一个井字游戏或连接-4游戏,所以我试图找到一些方法来限制只有2个玩家在一个房间。
下面是我的网站comsumers.py
from channels.generic.websocket import WebsocketConsumer
from asgiref.sync import async_to_sync
import json
class GameRoom(WebsocketConsumer):
def connect(self):
self.room_name = self.scope['url_route']['kwargs']['room_code']
self.room_group_name = 'room_%s' % self.room_name
print(self.room_group_name)
async_to_sync(self.channel_layer.group_add)(
self.room_group_name,
self.channel_name
)
self.accept()
我已经从这个问题中删除了一些不太必要的方法
2条答案
按热度按时间t5fffqht1#
您必须在项目中创建一个
room
模型,并将连接的用户保存到其中,然后您可以在connect
方法中添加一个validation
,如下所示:当然,您可以使用
F()
函数,并在connect
和disconnect
中使您的性能更好(当许多用户试图同时连接时非常有用)tpgth1q72#
如果使用
RedisChannelLayer
,请使用下一种方法扩展它们(决定取决于RedisChannelLayer.group_add
方法):在设置中定义:
在消费者体内使用: