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

一个纯粹基于jQuery和Django的SSE站内信通知的例子

这两天写了一个基于SSE技术的站内信通知红点的例子。现在来总结一下。

首先,站内信红点的实现方式基本上就三种:网页上设置一个Timer然后定时轮询;开一个WebSocket长链接;基于SSE的流模式。最终想试试SSE,就写了这个例子。

其次,SSE的实现也有很多种:第一种基于SSE.js;第二种是PHP;第三种是django。我采用的是django。网上大部分的例子都是需要第三方库: django-sse或者Daphen。我就是想基于原生jQuery和Django来实现。最后找了一个好方法,特此记录一下。

Django端的views代码:

def get_unread_message_count_view(request):def event_stream():while True:# 从数据库或其他数据源获取数据messages = Messages.objects.filter(read_flag=False)unread_message_count = messages.count()# 构造SSE消息event = 'message'message = f'data: {unread_message_count}\n\n'yield f'event: {event}\n{message}'response = StreamingHttpResponse(event_stream(), content_type='text/event-stream')response['Cache-Control'] = 'no-cache'return response

urls就是标准的代码

网页端:

<div class="fa-stack fa-2x" id="message_bell" data-count="10"><i class="fa fa-circle fa-stack-2x"></i><i class="fa fa-bell fa-stack-1x fa-inverse"></i>
</div>
<script type="text/javascript">$(function () {$(document).ready(function() {//data根据需求自定义参数const eventSource = new EventSource('get_unread_message_count');eventSource.addEventListener('message', function(event) {const data = event.data;$("#message_bell").attr("data-count",data);if (data == 0) {$('.fa-stack').addClass('hidden');}else {$('.fa-stack').removeClass('hidden');}// 处理收到的数据});});});</script>

相关文章:

  • 系统性能分析基本概念(3) : Tuning Efforts
  • element ui 表格实现单选
  • 力扣HOT100之二叉树:124. 二叉树中的最大路径和
  • 鸿蒙Flutter实战:21-混合开发详解-1-概述
  • 力扣-无重复字符的最长子串
  • 手机入网时长查询接口:精准风控与用户运营的智能利器
  • 深入理解 PlaNet(Deep Planning Network):基于python从零实现
  • ffmpeg 转换视频格式
  • 【MySQL成神之路】MySQL插入、删除、更新操作汇总
  • 掌握正则表达式:从基础语法到工程实践
  • 使用gradio创建LLM模型聊天Demo
  • 如何在 Mac M4 芯片电脑上卸载高版本的 Node.js
  • 【论文阅读】——AN EXPRESSIVE REPRESENTATION OF GENERAL 3D SHAPES
  • 网页 CSS美化(详解)
  • 机器学习圣经PRML作者Bishop20年后新作中文版出版!
  • python 绘制3D平面图
  • 【前端】每日一道面试题4:什么是CSS容器查询(Container Queries)?与媒体查询有何区别?
  • CSS:vertical-align用法以及布局小案例(较难)
  • Spark SQL、Hive SQL运行流程解析及对比
  • Linux环境基础开发工具->vim
  • 三亚推广公司/淘宝seo培训
  • wp可以做商城网站吗/近三天时政热点
  • 手机当服务器建网站/太原网站建设
  • 重庆购物网站建设/百度快速排名软件下载
  • 中国建设银行网站签名通下载安装/百度站长app
  • 湖北建设监理协会网站/百度推广一个点击多少钱