我正在开发一个有房间的聊天应用程序。每个房间有两个用户。用户可以在多个房间中,即,用户具有多个房间。现在他在一个房间里聊天。但他在另一个房间收到了一条信息。我想把其他房间的留言通知给用户。我应该如何实现这一点?
当前WebSocket连接的建立方式为:第一个月
group_name命名为"room"+room_id
。到目前为止,我有:
async def connect(self):
room_id = self.scope['url_route']['kwargs']['room_id']
await self.channel_layer.group_add(
"room"+room_id,
self.channel_name
)
await self.accept()
async def receive(self, text_data):
await self.channel_layer.group_send(
self.room_name,
{
'type': 'chat_message',
'message': json.loads(text_data)
}
)
async def chat_message(self, event):
await self.send(text_data=json.dumps({
'message': event['message']
}))
字符串
Django 2.x django-channels 2.x python 3.6
4条答案
按热度按时间z4bn682m1#
您至少需要两个型号
Message
、MessageThread
。当用户连接到套接字时,该通道将添加到包含该用户的每个线程组。您还必须将channel_name添加到用户会话中。字符串
k3fezbri2#
我做了类似的事情,你可以试试这样的:
字符串
我可能误解了你的问题。也许更像是:
为每个用户创建一个唯一的id,并使用该值作为“聊天室”,然后发送每个消息,其中包含聊天室编号和它应该发送的用户编号。Django可以解释用户id并将消息发送到正确的通道,然后让JavaScript解释消息和房间号,将它们带到正确的页面?
这是个有趣的想法
ukxgm1gy3#
(idea:)我打开了两个套接字:
1.一个用于用户正在其中发短信的当前房间
1.第二个为聊天室列表(一个隐藏的基础聊天室创建以及;最好说:属于聊天室列表的频道层),
然后,在第一个解释的通道(上面)中从任何用户收到的每个消息上,我将向两个套接字发送正确的回复。
示例在这里:chatroom.subtionary.com(只需点击一个聊天室,然后用电子邮件进入)它也重新排序聊天室列表和脉冲元素,也写下每个聊天室的最后一条消息在其元素下,也享受回复和删除选项!!
(我知道这是最懒的方法,但效果很好)
5tmbdcev4#
django代码的通告和通知系统使用基于类和使用串行化函数与孔项目代码在一步一步