six_001
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
"""2"""
|
||||
|
||||
import pydash
|
||||
from asgiref.sync import async_to_sync
|
||||
|
||||
from sixGuoDjango import RedisClientManager
|
||||
|
||||
redia_socket_5 = RedisClientManager().get_client(db_name="redis_5")
|
||||
"""consumers"""
|
||||
|
||||
import orjson
|
||||
from channels.generic.websocket import WebsocketConsumer
|
||||
|
||||
|
||||
class ChatConsumer(WebsocketConsumer):
|
||||
def connect(self):
|
||||
print("连接请求进来了", self.channel_name)
|
||||
room_id = pydash.get(obj=self.scope, path="url_route.kwargs.room_id")
|
||||
self.accept() # 接受连接
|
||||
redia_socket_5.set(name=room_id, value=self.channel_name)
|
||||
# self.channel_layer.group_add(group="demo_name", channel=self.channel_name)
|
||||
async_to_sync(self.channel_layer.group_add)(group="demo_name", channel=self.channel_name)
|
||||
async_to_sync(self.channel_layer.group_add)(group="demo_xiaozizi", channel=self.channel_name)
|
||||
|
||||
def receive(self, text_data=None, bytes_data=None):
|
||||
# text_data 已经是字符串,直接使用
|
||||
if text_data == "ping":
|
||||
self.send(text_data=orjson.dumps({"type": "监听心跳", "text": {"xiao": "xiaozizi"}},
|
||||
option=orjson.OPT_SORT_KEYS).decode(encoding="utf-8"))
|
||||
else:
|
||||
# 处理其他消息
|
||||
# print("判断生成了哟", text_data)
|
||||
self.send(text_data=orjson.dumps({"type": "chat_msg", "text": {"xiao": "xiaozizi"}},
|
||||
option=orjson.OPT_SORT_KEYS).decode(encoding="utf-8"))
|
||||
|
||||
def disconnect(self, code):
|
||||
room_id = pydash.get(obj=self.scope, path="url_route.kwargs.room_id") # 断开连接后可以拿到参数
|
||||
print("连接断开,code:", code, room_id)
|
||||
async_to_sync(self.channel_layer.group_discard)(group="demo_name", channel=self.channel_name)
|
||||
async_to_sync(self.channel_layer.group_discard)(group="demo_xiaozizi", channel=self.channel_name)
|
||||
|
||||
def update_更新用户头像(self, event):
|
||||
self.send(text_data=orjson.dumps(event, option=orjson.OPT_SORT_KEYS).decode(encoding="utf-8"))
|
||||
Reference in New Issue
Block a user