当前位置: 首页 > article >正文

【Django】在view中调用channel来主动进行websocket通信

前提:consumer中已经写好了建立连接的代码,并且能够成功把连接加入到通道层的组内

可以参考我的另一个博客:

LuckySheet协同编辑后端示例(Django+Channel,Websocket通信)_lucksheet 协同编辑-CSDN博客

我是懒得去折腾luckysheet的源码,所以尽量去把功能在后端实现,但是又需要一些功能来通过点击按钮实现把消息广播出去,所以就在视图函数里进行消息广播,同理在别的任意类型的函数中也可以使用。具体代码如下:
 

from channels.layers import get_channel_layer
import asyncio    



def send_message(self):
        # 获取通道层实例
        channel_layer = get_channel_layer()

        async def send_group_message():
            await channel_layer.group_send(
                "group_name",  # 替换为实际的组名,要和消费者加入的组名对应
                {
                    "type": "broadcast_message",  # 替换为消费者中处理该消息的对应方法名
                    "message": "Message from the view"
                }
            )
        # 运行异步函数来执行消息发送操作
        loop = asyncio.new_event_loop()
        asyncio.set_event_loop(loop)
        try:
            loop.run_until_complete(send_group_message())
        finally:
            loop.close()


http://www.kler.cn/a/428322.html

相关文章:

  • Linux下php8安装phpredis扩展的方法
  • [Python学习日记-79] socket 开发中的粘包现象(解决模拟 SSH 远程执行命令代码中的粘包问题)
  • 总线、UART、IIC、SPI
  • 哈希表示例
  • STM32项目分享:智能厨房安全检测系统
  • GIS 中的 SQLAlchemy:空间数据与数据库之间的桥梁
  • 什么是数据架构?
  • 卸载windows
  • 第四节、电机定角度转动【51单片机-TB6600驱动器-步进电机教程】
  • 深入解析二叉树算法
  • 开源之夏 2024 KubeSphere 社区项目总结
  • 注意力机制介绍
  • Windows 中将某个安装文件安装到指定目录
  • 机器学习之Nemenyi检验
  • 模型优化与迁移学习
  • [NSSRound#7 Team]ec_RCE
  • 海外的bug-hunters,不一样的403bypass
  • DR、HIS、PACS的交互,以及与其他软件系统之间的交互
  • Python学习(一)—— 编程环境安装
  • 动手学深度学习-线性神经网络-1线性回归
  • 项目搭建:springboot,mybatis, maven
  • Elasticsearch入门之HTTP基础操作
  • 【数字信号处理】Z变换,离散时间信号z变换的定义,一些常用序列的Z变换
  • node.js与npm的版本与Vue2和Vue3版本运行,nvm的使用
  • Python 在同一/或不同PPT文档之间复制幻灯片
  • 修改MySQL存储路径