我正在构建一个聊天应用程序。我想知道:
1)如果我当前实现聊天的方式不正确/编码实践不正确
2)如何将消息发送到多个组
基本思想如下:
我想以有效/可扩展的方式将消息发送给那些用户。
下面是我实现聊天的当前方式,其中消息发送给一个用户(在data [userID]中仅指定1个用户)
def connect(self):
self.room_name = self.scope['url_route']['kwargs']['room_name']
self.room_group_name = self.room_name
# Join room group
async_to_sync(self.channel_layer.group_add)(
self.room_group_name,
self.channel_name
)
self.accept()
def disconnect(self, close_code):
async_to_sync(self.channel_layer.group_discard)(
self.room_group_name,
self.channel_name
)
def receive(self, text_data):
print('Websocket received info!')
data = json.loads(text_data)
# Send the message to the specified user
self.send_channel_message(data[userID], data['message'])
def send_channel_message(self, group_name, message):
async_to_sync(self.channel_layer.group_send)(
'{}'.format(group_name), # Specify intented group
{
'type': 'channel_message',
'message': message
}
)
def channel_message(self, event):
message = event['message']
# Send message to WebSocket
self.send(text_data=json.dumps({
'message': message
}))
一种实现方法是遍历聊天消息所针对的用户,并将消息逐一发送给他们。
def receive(self, text_data):
print('Websocket received info!')
data = json.loads(text_data)
# Send the message to the specified user
for userID in data[userID]
self.send_channel_message(userID, data['message'])
此方法是最佳编码实践吗?
是否有更好的方法来完成我想做的事情?