web socket做实时推送

Python利用Socket.IO实现消息实时推送 Python利用Socket.IO实现消息实时推送 即时通讯简介 即时通讯(Instant Messaging)是一种基于互联网的即时交流消息的业务 类型: 在线push:适用于web页面和app,自己构建的IM服务器(socket.io框架,大佬可以自己封装socket) 离线push:适用于app,成本高,大厂可以自己用服务器做业务,小厂可以用第三方IM服务商:网易云信,融云,环信 传统的推送实现 轮询:客户端定时发出HTTP请求,查询服务器有没有新消息,效率低下,消耗资源 Comet 阅读详情

内容来源:点击跳转
主要是这个依赖。

        <!--socket-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-websocket</artifactId>
        </dependency>

配置类

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.socket.server.standard.ServerEndpointExporter;


@Configuration
public class Configure{

    @Bean
    public ServerEndpointExporter serverEndpointExporter(){
        return  new ServerEndpointExporter();
    }

}

websocket 类
当然,若不做人数,统计可去掉。


import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.stereotype.Component;
import javax.websocket.*;
import javax.websocket.server.PathParam;
import javax.websocket.server.ServerEndpoint;
import java.util.concurrent.CopyOnWriteArraySet;


@Component
@ServerEndpoint("/websocket/{sid}")
public class WebSocket {


    static Log log = LogFactory.getLog(WebSocket.class);
    //静态变量,用来记录当前在线连接数。应该把它设计成线程安全的。
    private static volatile int onlineCount = 0;
    //concurrent包的线程安全Set,用来存放每个客户端对应的Socket对象。
    private static CopyOnWriteArraySet<WebSocket> webSockets = new CopyOnWriteArraySet<WebSocket>();
    //与某个客户端的连接会话,需要通过它来给客户端发送数据
    private Session session;


    @OnOpen
    public void open(Session session,@PathParam("sid") String sid){
        this.session = session;
        webSockets.add(this);
        addOnlineCount();   //在线人数+1
        log.info("有新窗口开始监听:"+sid+"   当前在线人数为" + getOnlineCount());
        //sendMessage("已成功建立连接!");
    }

    @OnClose
    public void close(Session session){
        webSockets.remove(this);
        subOnlineCount();   //在线人数-1
    }

    @OnMessage
    public void message(String message){
        //收到客户端消息后调用的方法
        for (WebSocket item : webSockets) {
            item.sendMessage(message);
        }
    }

    public void sendMessage(String message){
        try{
            this.session.getBasicRemote().sendText(message);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static void sendInfoToAll(String message){
        for (WebSocket item : webSockets) {
            //这里全部推送,单独发送需要判断sid
            item.sendMessage(message);
        }
    }

    @OnError
    public void error(Session session,Throwable error){
        error.printStackTrace();
    }



    public static synchronized int getOnlineCount() {
        return onlineCount;
    }
    public static synchronized void addOnlineCount() {
        WebSocket.onlineCount++;
    }
    public static synchronized void subOnlineCount() {
        WebSocket.onlineCount--;
    }


}

controller


@Controller
public class AccessController {


    @RequestMapping("/")
    public String index(){
        return "index";
    }


    @Scheduled(fixedRate = 3000)
    @GetMapping("/visual")
    @ResponseBody
    public List<Integer> visual(){
        List<Integer> collect = Arrays.stream("30,5,20,40,23,50".split(",")).map(element -> (int)(Math.random() * 50 + 1)).collect(Collectors.toList());
        //数据推送
        push(collect.toString().replace("[","").replace("]",""));
        return collect;
    }



    private void push(String message) {
        System.out.println(message);
        WebSocket.sendInfoToAll(message);
    }

}

还有一个html,看文章首页链接
在这里插入图片描述

RobotFramework二次开发——Socket推送实时日志 背景上一章说道RobotFramework的执行监听,是通过Socket服务来实现的,那么现在就来实现一下简单的Socket服务思路Socket服务有一个client端和一个server端,Listener.py我们可以当成一个Client,因为在执行的时候,我们需要Listener来发送实时数据,因此,我们还要另写一段服务端的代码。改造Listener.py首先,要开启要一个Socket服务 阅读详情

相关推荐

今天我们要聊的是 Web 实时消息推送的七种实现方案

🔥关注墨瑾轩,带你探索编程的奥秘!🚀🔥超萌技术攻略,轻松晋级编程高手🚀🔥技术宝库已备好,就等你来挖掘🚀🔥订阅墨瑾轩,智趣学习不孤单🚀🔥即刻启航,编程之旅更有趣🚀嗨,各位小伙伴!今天我们要聊的是 Web 实时消息推送的七种实现方案。在互联网时代,实时通信已经成为许多应用程序的核心功能之一,无论是社交网络、在线客服系统,还是股票交易软件,都需要实时的消息推送功能来提升用户体验。下面,我们就一起来看看这七种方案,保证让你看完就能上手!

java专栏 1025

在winform中使用websocket

这种传统的模式带来很明显的缺点,即浏览器需要不断的向服务器发出请求,然后HTTP请求可能包含较长的头部,其中真正有效的数据可能只是很小的一部分,显然这样会浪费很多的宽带等资源。在设计模式中,socket其实就是一个门面模式,它把复杂的TCP/IP协议隐藏在socket接口后面,对用户来说,一组简单的接口就是全部,让socket去组织数据,以符合指定的协议。与HTTP不同的是,Websocket需要先创建连接,这就使得其成为一种有状态的协议,之后通信时可以省略部分状态信息。(开始前的HTTP握手)

任玉腾的博客 3096

Python实现WebSocket与Socket消息推送技术解析

Socket编程起源于20世纪70年代的UNIX操作系统。其设计理念是为了解决计算机网络中不同进程间的通信问题。在最初的设计中,网络通信被抽象为文件的读写操作。程序员可以使用标准的I/O操作来实现不同计算机上的进程通信。随着时间的推移,这种通信方式逐渐演变成今天的Socket API。发展到现在,Socket编程已经成为了网络编程中最基础的技术之一。无论是传统的服务器-客户端模式还是现代的P2P(Peer-to-Peer)通信,都离不开Socket的参与。

weixin_36012152的博客 1223

websockets-后端主动向前端推送消息

WebSocket协议是基于TCP的一种新的网络协议。它实现了浏览器与服务器全双工(full-duplex)通信,即允许服务器主动发送信息给客户端。因此,在WebSocket中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输,客户端和服务器之间的数据交换变得更加简单。

qq_45770147的博客 6245

c# WinForm 使用Socket实现简单实现服务端与客户端连接,实现消息发送,服务器客户端重连

c# WinForm 使用Socket实现简单实现服务端与客户端连接,实现消息发送,服务器断开后,重启。客户端重连

从零开始!在 Windows 上安装与配置 Dify

这篇博客将详细介绍如何在 Windows 系统上部署 Dify,适合零基础用户。从 Docker 和 WSL 的安装配置开始,逐步指导用户设置 Git、Docker 环境以及 Dify 配置文件,解决可能遇到的端口冲突等问题,最终完成 Dify 的启动和测试。通过简明易懂的步骤,帮助用户在本地成功运行 Dify,实现模型供应商配置,让 Dify 项目在 Windows 平台上顺利上线。

qq_49035156的博客 5万+

webSocket实现数据的实时推送(附:前后端代码)

webSocket实现数据的实时推送(附:前后端代码)

Javaの甘乃迪的博客 3万+

ThingsKit物联网平台产品管理之物模型

物模型是ThingsKit物联网平台为产品定义的数据模型,用于描述产品的功能。本文介绍物模型相关概念和使用限制。

云腾五洲官方博客 1173

Web Scoket简述

Web Scoket

阿狸演绎的博客 980

手把手入门YOLO到改进优化教程 | 【P2基础篇】数据标注+环境搭建+模型训练

本节以 YOLO自定义目标检测训练为主线,带你从零开始完成 数据标注 → 环境搭建 → 模型训练 → 结果的流程。使用labelImg制作符合YOLO格式的自定义数据集。在Windows基于 Python + Conda 创建独立虚拟环境,安装 PyTorch + CUDA + ultralytics,配置 PyCharm 运行环境。本节不仅使用自定义数据集进行演示,同时也用公开数据集训练 YOLO,查看训练日志与可视化结果(PR、P/R/F1 曲线等)等。

嵌入式阿齐Archie 2万+

2026年沐曦集成电路数字IC笔试试卷带答案

本文摘要: 这是一份数字IC设计笔试模拟题,包含单选题、波形分析、多选题和代码设计题。重点考察ASIC设计流程(如逻辑综合将RTL转为门级网表)、时序分析(建立时间余量计算)、跨时钟域处理(格雷码应用)、复位机制、状态机设计等核心知识点。涉及沐曦特色考点如GPU架构(SIMT模型)、国产GPU芯片(曦云C系列)及MXMACA软件栈。代码题要求实现50%占空比三分频电路,综合考察Verilog设计能力。试题强调PPA优化、低功耗技术等工程实践要点,覆盖数字IC前端设计全流程核心内容。(149字)

Open 258

Web 实时推送技术的总结

前言 随着 Web 的发展,用户对于 Web 的实时推送要求也越来越高 ,比如,工业运行监控、Web 在线通讯、即时报价系统、在线游戏等,都需要将后台发生的变化主动地、实时地传送到浏览器端,而不需要用户手动地刷新页面。本文对过去和现在流行的 Web 实时推送技术进行了比较与总结。 本文完整的源代码请猛戳Github博客(https://github.com/ljianshu/Blog),纸上得...

web前端技巧开发 3267

YOLO系列专栏(六):YOLO26热力图可视化 | 解析模型推理逻辑,定位检测关键区域

YOLO26作为新一代目标检测模型,其核心优势是高效的特征提取和精准的目标定位,但模型内部的推理过程的“黑盒”特性,给我们的优化带来了很大困扰:❌ 检测精度低:不知道是模型没学到关键特征,还是特征提取不充分;❌ 出现误检/漏检:无法定位问题根源——是锚框不合适?还是特征图未捕捉到目标?❌ 模型优化盲目:调参、修改网络结构全靠“猜”,缺乏针对性;❌ 难以解释模型行为:实际项目中,需要说明模型“为什么检测到这个目标”,尤其是医疗、工业等对可解释性要求高的场景。而热力图可视化。

qq_36130719的博客 732

Web实时消息推送的几种方案

消息推送常见方案、轮询、websocket、sse

qq_73181349的博客 1687

YOLOv11改进 - C3k2融合 | C3k2 融合 ARConv 自适应矩形卷积:动态调整卷积核形状与采样点

本文介绍了将自适应矩形卷积(ARConv)模块与YOLOv11相结合的方法。ARConv是针对遥感图像全色锐化任务设计的创新卷积模块,可自适应调整卷积核形状与采样点数量,解决传统卷积刚性限制,实现高效特征提取。其工作流程包括学习卷积核高度和宽度、选择采样点数量、生成采样图、卷积实现与空间自适应增强。我们将集成ARConv的C3k2_ARConv模块引入YOLOv11,对相关代码进行修改和注册,并配置了yolov11 - C3k2_ARConv.yaml文件。实验脚本显示,该结合方式应用于目标检测任务。

魔改工程师的博客 1005

【论文汇总】Diffusion Models视频生成/视频编辑/可控视频生成/跨模态视频生成

本文总结了Diffusion Models视频生成领域相关的工作,目前共收录142篇,持续更新中。

沉迷单车的追风少年 1671

WEB即时通讯-WEB消息推送-服务器推送以及使用goeasy第三方服务快速实现WEB服务器端实时推送

goeasy的实现原理也很简单,我们在WEB端嵌入一段goeasy的JS代码,用户在请求到我们的WEB服务器返回的http结果后执行js代码请求goeasy,这样goeasy就为客户端进行了身份标记并保持了连接(如果关闭浏览器则就会断掉),然后我们的WEB服务器向goeasy发送消息指定推给哪些用户(每个用户都有身份标记,可以是多个用户同一个标记),然后就把工作交给goeasy了,它会负责把这个消息发送给所有未中断的客户端,并在goeasy的后台中有详细的统计数据。如下是html和js代码。

本博客记录了从2014年以来在工作学习中遇到的技术问题、解决方法以及部分个人人生经历、经验等内容。 1021

宇瞳杯安防镜头设计

宇瞳杯安防镜头设计

weixin_72050316的博客 1507

WEB 实时推送技术的总结

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34168880的博客 121

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Spring MVC 实现web Socket向前端实时推送数据

  最近项目中用到了webSocket服务,由后台实时向所有的前端推送消息,前端暂时是不可以发消息给后端的,数据的来源是由具体的设备数据收集器收集起来,然后通过socket推送给后端,后端收到数据后,再将这些数据推送给前端。   听起来业务逻辑有点复杂。其实单独的实现socket或websocket都比较简单,但是二者之间的数据传输问题,困扰了我很久。也想过用redis做一个消息队列,...

bangpao4432的博客 733

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

php 实时消息通知推送 tp5 websocket web-msg-sender

1.本次应用场景 当用户在前端提交有新的订单时 后台管理页面实时接收订单消息并进行通知 2.处理 引用 webmsgsender 基于 web-msg-sender 进行实时消息的推送 web-msg-sender 是基于 PHPSocket.io 开发的,而 PHPSocket.io 是基于 workerman 开发的。 多浏览器支持 支持针对单个用户推送消息 支持向所有用户推送消息 长连接...

东冬东的博客 3021

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

浅谈Web 实时推送技术

转载https://www.toutiao.com/i6672140626122768899/?timestamp=1553652135&app=news_article&group_id=6672140626122768899 前言 随着 Web 的发展,用户对于 Web 的实时推送要求也越来越高 ,比如,工业运行监控、Web 在线通讯、即时报价系统、在线游戏等,都需要将后...

Jeffrey's 专栏 641

websocket 实时推送通知公告

需求: 后台新增消息通知公告,并实时推送给客户端,好像用websocket可以很方便的解决这个问题,但是websocket有个弊端不兼容IE8,9后面查阅一些大牛博客,好像可以用web-socket-js 解决兼容性问题,这里也用了web-sokcet-js具体结果还需要测试 代码: 客户端 web-socket-js <html><head> ...

才这么点的博客 4079
上一篇: left join 分组根据 左表元素 和右边元素 。根据右表分组,产生重复行-奇怪
下一篇: @JsonInclude(JsonInclude.Include.NON_NULL) 不生效问题,不返还null给前端
一个大泥球
博客等级 码龄9年 41粉丝 93原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值