channels一对一聊天
Django使用channels做一对一聊天室的时候出现一个问题:Group name must be a valid unicode string containing only ASCII alphanumerics, hyphens, or periods.代码问题出现在
"event": { "message": message.get('message'), "group": self.group_name, "from_user": from_user, "time": time, # 'avatar_url': avatar_url, "from_username": from_username, },
但是当我注释掉这里的所有内容,还是会出现这个问题。 逻辑代码:
async def receive_json(self, message, **kwargs): # 收到信息时调用 to_user = message.get('to_user') from_user = message.get('from_user') time = message.get('time') # 信息发送 length = len(ChatConsumer.chats[self.group_name]) print(length) if length == 2: print('两个人') await self.channel_layer.group_send( self.group_name, { "type": "chat.message", "message": message.get('message'), "from_user": from_user, "to_user": to_user, "time": time, }, ) else: print('一个人') try: user = User.objects.get(uid__exact=from_user) except User.DoesNotExist: user = None # avatar_url = 'http://127.0.0.1:8000' + str(user.user_image_url) from_username = user.uname await self.channel_layer.group_send( to_user, { "type": "push.message", "event": { "message": message.get('message'), "group": self.group_name, "from_user": from_user, "time": time, # 'avatar_url': avatar_url, "from_username": from_username, }, }, ) async def chat_message(self, event): # Handles the "chat.message" event when it's sent to us. # print(event) await self.send_json({ "message": event["message"], "from_user": event["from_user"], "to_user": event["to_user"], "time": event["time"], }) # 推送consumer class PushConsumer(AsyncWebsocketConsumer): async def connect(self): self.group_name = self.scope['url_route']['kwargs']['uid'] await self.channel_layer.group_add( self.group_name, self.channel_name ) await self.accept() async def disconnect(self, close_code): await self.channel_layer.group_discard( self.group_name, self.channel_name ) # print(PushConsumer.chats) async def push_message(self, event): # print(event) await self.send(text_data=json.dumps({ "event": event['event'] }))
评论 1
请问解决了吗