辉煌仪奇 2022-03-18 11:50 采纳率: 47.4%
浏览 317
已结题

django 如何使用websocket 做到连续发送消息给客户端

下面是部分代码,已做到客户端域服务器的收发,但是目前为止未找到服务器向客户端发送一条或者多条消息的实现方法,
需要实现的内容有,接受到一条消息后,可以实现向客户端发送一条或多条消息,或者只要客户端与服务器保持链接,就可以无限发送消息
想要实现上诉方式,该如何修改代码,或者需要什么模块
目前实现django websocket的方式是
channels ==3.0.4

from channels.generic.websocket import AsyncWebsocketConsumer
class MessagesConsumer(AsyncWebsocketConsumer):
    
    async def connect(self):
        #acceptlist.append(self)
        #await self.accept()
        await self.accept()
    
    async def receive(self,text_data = None,bytes_data = None):
        '''接收到后端发来的私信'''
        import json
        jsonobj = json.loads(text_data)
        # for i in acceptlist:
        #     if i == self:
        #         if not acceptdict.get(jsonobj['id']):
        #             acceptdict[jsonobj['id']] = i
        #             await self.channel_layer.group_add(
        #                 jsonobj['id'],
        #                 self.channel_name
        #                 )
        
        
        if jsonobj['title'] == "port":
            if jsonobj['option'] == "get":
                jsonstr = getportname(jsonobj)
                await self.send(text_data = jsonstr)
            if jsonobj['option'] == "read":
                jsonobj['data'] = "打开操作成功"
                jsonstr = json.dumps(jsonobj)
                await self.send(text_data = jsonstr)

    async def disconnect(self,code):
        '''离开聊天组'''
        # await self.channel_layer.group_discard(self.scope['user'].username,self.channel_name)
        # 关闭
        await self.channel_layer.group_discard(self.scope,self.channel_name)
        # await  self.close()
  • 写回答

6条回答 默认 最新

  • Haven55555 2022-03-18 12:26
    关注

    你要做的就是:当客户端和服务器端连上时会有个session, 服务器上做一个链接池将客户端session缓存下来,然后要给哪个客户端发信息就调取哪个来发送就可以了

    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 3月21日
  • 创建了问题 3月18日

悬赏问题

  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置