Spring WebSocket(STOMP)

Spring STOMP-协议概述 在实际广播消息的场景,你也能在Spring里配置一个专业的STOMP消息代理(例如:RabbitMQ,ActiveMQ等)。在这种情况下,Spring维护到代理的TCP连接,将消息中继(转发来自客户端的STOMP消息)给代理,并将来自代理的消息下发给连接着的WebSocket客户端。因此,Spring web应用程序可以依赖统一的基于HTTP的安全机制、通用的验证和熟悉的编程模型来处理消息。服务器所有发送的消息都必须是对特定的客户端订阅的响应,并且服务端发送消息的。消息头必须和客户端订阅消息的。 阅读详情

一句话定义

WebSocket:底层双向长连接协议,通过HTTP握手升级协议,建立TCP长通道。传统HTTP只能前端发起请求、后端响应;WebSocket建立连接之后,服务端可以主动向前端推送消息。

STOMP(Simple Text Oriented Messaging Protocol,面向简单文本消息协议),是运行在WebSocket之上的应用层子协议,相当于一套消息通信规范,类似HTTP定义请求响应格式。原生WebSocket只提供字节流通道,没有消息路由、订阅机制;STOMP补齐了发布/订阅模型,消息依靠destination目的地进行路由,Spring框架对STOMP做了封装,也就是我们常说的 Spring WebSocket STOMP。

通俗类比:WebSocket相当于一根双向通话电话线;STOMP是电话双方约定好的通话指令规范,定义连接、订阅、发消息、断开、心跳等指令。

一、核心原理

  1. 握手阶段:客户端发起普通HTTP请求,请求头携带Upgrade: websocket标识。后端校验通过,返回101状态码,协议升级,TCP长连接正式建立。>

握手是HTTP,通信阶段是WebSocket长连接。

  1. STOMP帧通信:长连接通道内传输STOMP帧,每一帧代表一条指令。
  2. 消息代理Broker:Spring内置消息代理,接收消息,根据destination目的地,将消息分发到所有订阅该地址的客户端。

二、STOMP常用指令帧

指令作用
CONNECT客户端发起STOMP连接认证
SUBSCRIBE订阅某个目的地destination,监听推送消息
SEND客户端向指定目的地发送消息
MESSAGE服务端推送消息帧,发给订阅客户端
DISCONNECT客户端断开STOMP连接

三、目的地destination前缀含义(面试重点)

  1. /topic:广播主题,一对多。消息推送给所有订阅该topic的客户端,适合全局通知、群聊、大屏广播。
  2. /queue:点对点消息,一对一私聊、用户私有消息。
  3. /app:业务前缀。消息不会交给消息代理,转发给后端@MessageMapping控制器执行业务逻辑。
  4. /user:用户专属私有目的地,结合登录认证,消息只推送给指定登录用户。前端订阅地址格式:/user/queue/xxx

四、核心注解

  1. @EnableWebSocketMessageBroker:开启STOMP消息代理,放在SpringBoot启动类或者配置类,开启WebSocket STOMP功能,核心注解。
  2. @MessageMapping:接收客户端通过STOMP的SEND指令发送过来的消息,作用类比SpringMVC中的@RequestMapping。
    @RequestMapping匹配HTTP请求URL;@MessageMapping匹配STOMP消息的目的地destination。客户端发送消息到/app/xxx,配置里设置前缀/app,注解只需要填写后面路径/xxx,匹配成功就进入该方法执行业务。>

区别:@RequestMapping是HTTP短连接,一问一答;@MessageMapping基于WebSocket长连接,一次握手建立连接后,可以反复发送消息,多次触发该方法。

  1. @SendTo:方法处理业务完成后,自动将返回结果推送到指定topic,广播给所有订阅客户端。
  2. @SendToUser:消息只推送给当前登录认证用户,用于一对一私聊。

五、后端完整配置类

import org.springframework.context.annotation.Configuration;
import org.springframework.messaging.simp.config.MessageBrokerRegistry;
import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker;
import org.springframework.web.socket.config.annotation.StompEndpointRegistry;
import org.springframework.web.socket.config.annotation.WebSocketMessageBrokerConfigurer;

@Configuration
@EnableWebSocketMessageBroker
public class WebSocketStompConfig implements WebSocketMessageBrokerConfigurer {

    /**
     * 注册STOMP连接端点,前端连接地址:ws://localhost:8080/ws
     */
    @Override
    public void registerStompEndpoints(StompEndpointRegistry registry) {
        registry.addEndpoint("/ws")
                // 跨域配置,线上不要写*,指定前端域名
                .setAllowedOriginPatterns("*")
                // SockJS降级方案
                .withSockJS()
                // 设置心跳,单位毫秒,10秒心跳保活
                .setHeartbeatTime(10000);
    }

    /**
     * 配置消息代理
     */
    @Override
    public void configureMessageBroker(MessageBrokerRegistry registry) {
        // 开启内置内存消息代理,处理topic、queue目的地
        registry.enableSimpleBroker("/topic","/queue");
        // 应用消息前缀,客户端发送业务消息以 /app 开头
        registry.setApplicationDestinationPrefixes("/app");
    }
}

六、Controller业务代码示例

示例1:广播消息(群聊,@SendTo)

import org.springframework.messaging.handler.annotation.MessageMapping;
import org.springframework.messaging.handler.annotation.SendTo;
import org.springframework.stereotype.Controller;

@Controller
public class StompChatController {

    // 前端发送消息目的地:/app/chat
    @MessageMapping("/chat")
    @SendTo("/topic/chatRoom") // 处理结果广播推送给所有订阅 /topic/chatRoom 的客户端
    public String chatHandle(String msg){
        return "收到广播消息:" + msg;
    }
}

示例2:一对一私聊(@SendToUser)

@Controller
public class StompPrivateMsgController {
    // 前端发送消息:/app/privateMsg
    @MessageMapping("/privateMsg")
    @SendToUser("/queue/private") // 仅推送给当前登录用户
    public String privateMsgHandle(String message){
        return "私聊消息内容:" + message;
    }
}

前端订阅私聊地址:/user/queue/private

七、前端 stomp.js 完整示例

前端引入sockjs-client和stompjs,建立连接、订阅主题、发送消息。

<!-- 引入依赖js -->
<script src="[https://cdn.jsdelivr.net/npm/sockjs-client@1/dist/sockjs.min.js](https://cdn.jsdelivr.net/npm/sockjs-client@1/dist/sockjs.min.js)"></script>
<script src="[https://cdn.jsdelivr.net/npm/stompjs@6/dist/esm5/stomp.min.js](https://cdn.jsdelivr.net/npm/stompjs@6/dist/esm5/stomp.min.js)"></script>

<script>
// 1. 创建SockJS连接实例,后端端点/ws
const socket = new SockJS('[http://localhost:8080/ws](http://localhost:8080/ws)');
// 2. 创建STOMP客户端
const stompClient = Stomp.over(socket);

// 3. 发起STOMP连接
stompClient.connect({}, function(frame) {
    console.log('STOMP连接成功', frame);

    // 订阅广播主题 /topic/chatRoom
    stompClient.subscribe('/topic/chatRoom', function(msg) {
        console.log("收到广播消息:", msg.body);
    });

    // 订阅个人私聊消息 /user/queue/private
    stompClient.subscribe('/user/queue/private', function(msg) {
        console.log("收到私聊消息:", msg.body);
    });

    // 发送消息到后端业务接口 /app/chat
    stompClient.send("/app/chat", {}, "Hello STOMP!");

}, function(error) {
    // 连接失败回调
    console.error("STOMP连接失败", error);
});
</script>

八、SockJS是什么

部分老旧浏览器、防火墙、反向代理会拦截原生WebSocket协议。
.withSockJS()开启降级策略:优先尝试原生WebSocket;失败自动切换为http长轮询、xhr-stream。

优势:后端、前端业务代码完全不用改动,自动兼容低版本环境。

九、心跳机制 HeartBeat(生产环境必备)

长时间空闲连接,防火墙、Nginx会主动断开TCP连接,服务端无法感知客户端掉线,造成无效连接占用服务器资源。
心跳用于连接保活、检测客户端是否离线。
在注册端点时通过setHeartbeatTime(10000)设置心跳周期(单位ms,示例10s),服务端定时发送心跳包,客户端回复心跳,维持连接。

十、两种消息Broker对比

SimpleBroker(内置内存Broker)

SimpleBroker是Spring STOMP内置、基于JVM内存实现的简易消息代理,Broker即消息代理,负责接收消息、维护客户端订阅关系,并根据目的地destination完成消息分发。消息和订阅信息全部保存在当前JVM内存,不需要额外部署MQ中间件,开箱即用。

  • 优点:零额外组件依赖,开发测试快速验证功能,配置简单,轻量易用。
  • 缺点:仅单机有效,集群多实例之间内存隔离,消息无法跨服务转发;消息无持久化,服务重启订阅关系、消息全部丢失;缺少消息ACK、死信、消息重试等高级特性。
类型SimpleBroker(内置内存Broker)外部Broker RabbitMQ/ActiveMQ
部署内存实现,无需额外中间件,开箱即用需要独立部署MQ,并开启STOMP插件
集群支持❌ 单机有效,多实例之间消息隔离,A服务消息不能推送到B服务连接的客户端✅ 支持集群多实例,消息跨节点互通
适用场景单机项目、小流量演示、简单测试高并发、大量长连接、生产环境
消息持久化❌ 内存消息,服务重启消息丢失✅ 支持消息持久化、消息重试、死信队列
性能上限连接数量有限支持上万长连接,性能更强

开启方式:registry.enableSimpleBroker("/topic","/queue");

十一、踩坑点与注意事项

  1. 跨域问题
    前后端分离项目,前端与后端域名端口不一致,需要setAllowedOriginPatterns()配置跨域。生产环境不要直接写*,指定前端域名提升安全性。
  2. 认证鉴权
    STOMP身份校验在握手阶段完成。连接建立之后,普通SpringMVC拦截器不再生效,需要使用ChannelInterceptor拦截STOMP消息帧做权限校验。
  3. 集群部署大坑
    内置SimpleBroker存储在JVM内存,多台服务实例之间互不感知。集群环境必须接入RabbitMQ作为外部STOMP消息代理,才能实现跨服务器消息推送。
  4. 连接资源限制
    每一条WebSocket长连接占用一个TCP文件句柄。在线用户量大时,需要调整服务器操作系统最大文件句柄数,防止连接打满。
  5. Nginx反向代理配置
    Nginx代理WebSocket长连接,必须添加升级相关配置,否则握手失败、连接很快断开,需要配置Upgrade头、保持长连接超时时间。
  6. 消息丢失
    SimpleBroker消息保存在内存,服务重启消息全部丢失;需要消息持久化场景,使用RabbitMQ外部Broker。
  7. 什么是SimpleBroker
    SimpleBroker是Spring WebSocket STOMP内置的内存消息代理,在JVM内存维护客户端订阅关系,负责消息路由分发,无需额外MQ中间件。只能单机使用,集群环境下多台实例之间无法互通消息,消息不保持久化,适合开发测试;生产集群项目建议接入RabbitMQ外部Broker。

十二、适用场景

✅ 推荐场景:系统站内实时通知、在线聊天、数据大屏实时刷新、订单状态实时推送、物联网设备状态上报。
❌ 不推荐:超大规模百万级长连接场景(需要专业MQ架构优化)。

十三、面试精简背诵版

Spring WebSocket STOMP,是在WebSocket双向长连接基础上,使用STOMP子协议实现发布订阅模式的实时消息推送。WebSocket依靠HTTP握手升级TCP长连接,解决HTTP只能一问一答的局限;STOMP提供SUBSCRIBE订阅、SEND发送消息,通过destination目的地路由消息。
使用@EnableWebSocketMessageBroker开启功能,@MessageMapping接收客户端消息,@SendTo实现广播推送,@SendToUser实现一对一私聊。SimpleBroker是内存内置代理,仅支持单机;集群生产环境需要接入RabbitMQ作为外部STOMP Broker。搭配SockJS实现浏览器降级,心跳机制保活连接。多用于实时通知、在线聊天、实时数据大屏。

十四、高频面试题

  1. WebSocket 和 STOMP 的区别?
    WebSocket是底层双向长连接TCP协议;STOMP是运行在WebSocket之上的应用层文本子协议,定义消息帧、发布订阅、目的地路由。原生WebSocket没有订阅和消息路由能力,STOMP做了上层封装。
  2. /topic /queue /app /user 四个目的地前缀分别是什么?
  • /topic:广播,一对多,群发消息;
  • /queue:点对点消息;
  • /app:交给后端@MessageMapping执行业务逻辑;
  • /user:用户私有目的地,一对一推送私聊消息。
  1. SockJS的作用?
    浏览器、防火墙不支持原生WebSocket时,自动降级为HTTP长轮询,业务代码无需修改,兼容老旧环境。
  2. SimpleBroker为什么集群不能用?
    SimpleBroker消息存储在当前JVM内存,多台服务实例之间不共享消息,A服务收到消息,B服务上建立连接的客户端收不到广播,集群环境必须接入RabbitMQ。
  3. STOMP心跳的作用?
    TCP连接保活,识别掉线客户端,及时释放无效TCP连接,避免服务器连接资源泄漏。
  4. STOMP连接认证为什么不能用普通MVC拦截器?
    WebSocket握手完成后,通信走消息通道,不再经过SpringMVC的Servlet链路,MVC拦截器失效,要使用ChannelInterceptor拦截消息帧。
  5. @MessageMapping 和 @RequestMapping 的区别?
    @RequestMapping处理HTTP请求,匹配URL,属于短连接,一问一答;@MessageMapping接收STOMP的SEND消息,匹配destination目的地,基于WebSocket长连接,一次握手建立连接后可以反复收发消息。

基于Spring Cloud Gateway + STOMP 实现WebSocket负载均衡 背景介绍 前段时间项目中有服务端推送的业务场景,首先映入脑海的便是WebSocket和SSE,相较之下,我们决定使用WebSocket,但经过仔细分析与尝试以后,发现如下难点亟需攻克,否则方案就得搁浅。 zuul 1.0对WebSocket支持并不理想,连接一段时间后就会自动掉线:Whoops! Lost connection to http://localhost:7000/web-sock... 阅读详情

相关推荐

Vue使用Stompjs监听并接收Activemq的信息

第一步:安装Stompjs和net npm install stompjs npm install net 第二步:新建连接Activemq参数文件 在config文件夹下新建一个linkparam文件 里面复制下面三句话 export const MQ_SERVICE = 'ws://192.168.x.x:61614/stomp' // mq服务地址 export const MQ_USERNAME = 'xx' // mq连接用户名 export const MQ_PASSWORD.

蜗牛~~ 5026

微信小程序使用stomp.js实现STOMP传输协议的实时聊天

本来使用websocket,后端同事使用了stomp协议,导致前端也需要对应修改。

你好!刘斩仙 5049

Spring框架-基于STOMP使用Websocket

Spring框架提供了多种WebSock消息机制,不仅包含了模拟SockJS,还提供了基于STOMP的订阅发布机制。STOMP即Simple Text Orientated Messaging Protocol,简单文本定向消息协议,它提供了一个可互操作的连接格式,允许STOMP客户端与任意STOMP消息代理(Broker)进行交互。本文展示了XML+注解两种形式的STOMP工程搭建及相关问题

mystonelxj的博客 536

使用stompjs实现Websocket即时通讯订阅、发布

1、使用轮询进行查询(如果状态在某一特定情况下长时间没有改变,客户端频繁的调用接口会造成资源浪费)以下实例使用的是stompjs和sockjs-client,目的是达到消息的订阅、发布。3、连接和断开调用(方案可采用,登录操作和刷新页面时进行连接,退出登录进行断开)日常开发中很多时候会使用到即时通讯 ,实现消息实时更新的方式。1、以下可封装独立文件 stompManager.js。4、其他文件调用订阅、取消订阅。2、main.js 文件引入。2、使用websocket。废话不多说,直接上代码。

jiangzhihao0515的博客 4466

Spring WebSocket入门实例、源码解读、STOMP客户端

SpringBoot WebSocket实例及源码解读。

甘蓝的专栏 565

stompjs:用于 Web 浏览器和 node.js 应用程序的 Javascript 和 Typescript Stomp 客户端

STOMP.js 这个库为 Web 浏览器和 node.js 应用程序提供了一个基于 WebSocket 的 STOMP 客户端。 介绍 此存储库适用于此库的版本 5 及更高版本。 不再支持较低版本。 该库允许您通过 WebSocket 连接到 STOMP 代理。 该库支持完整的 STOMP 规范,包括所有当前协议变体。 大多数流行的消息传递代理都支持 STOMP 和 STOMP 通过 WebSockets 本地或使用插件。 一般来说,浏览器中的 JavaScript 引擎对二进制协议并不友好,因此使用 STOMP 是一个不错的选择,因为它是一种面向文本的协议。 这个库源于发布的一个版本。 当前状态 该库的第 5 版已使用 TypeScript 自下而上重写(第 3/4 版使用 CoffeeScript)。 代码已发生重大变化,因此,虽然存在兼容模式,但您可能需要更新代码。 该库

使用spring的STOMP实现WebSocket

本文介绍如何利用WebSocket和STOMP实现消息功能 WebSocket是发送和接收消息的底层API,而SockJS是在WebSocket 之上的API,最后 STOMP(面向消息的简单文本协议)是基于SockJS 的高级API(简而言之,WebSocket 是底层协议,SockJS 是WebSocket 的备选方案,也是底层协议,而STOMP是基于WebSocket(SockJS) 的上层协议) WebSocket WebSocket协议提供了通过一个套接字实现全双工通信的功能。也能够实现web浏览

weixin_37862824的博客 4010

Win10和Ubantu16.04双系统下,卸载Ubantu

Win10和Ubantu16.04双系统下,卸载Ubantu 机器配置 华硕主板,英伟达显卡(这不是重点) Win10与Ubantu16.04均为UFFI分区(如果不知道这个也不需要在意,一般默认的都是这样,鸵鸟原则) 清除Ubantu系统 一般按照常规的方法来删除Ubantu,都是直接将磁盘管理器里面的关于Ubantu的磁盘清空,但是还会留下一个UFFI分区,如果不进行删除的话,开机时候还是会有...

qq_33289694的博客 390

spring-websocket基于stomp实现websocket

spring-websocket基于stomp实现websocket

毅香雪海的博客 2353

手把手教你用TJA1145A实现CAN节点智能唤醒(含数据帧过滤技巧)

本文详细介绍了如何使用TJA1145A收发器实现CAN节点的智能唤醒功能,包括数据帧过滤技巧和超低功耗设计。通过硬件级帧过滤和双条件唤醒机制,TJA1145A在保持微安级休眠电流的同时,能对特定报文做出毫秒级响应,显著提升电池供电设备的续航能力。

weixin_28721917的博客 249

nnU-Net v2实战:从零开始配置环境与训练自定义医学影像数据集

本文详细介绍了nnU-Net v2在医学影像分割中的实战应用,从环境配置到自定义数据集训练的全流程。重点讲解了Python 3.9+环境搭建、PyTorch安装技巧、医学影像数据预处理规范,以及五折交叉验证训练方法,帮助开发者快速掌握这一先进的医学影像分析工具。

weixin_28718487的博客 352

SpringBoot/Spring中建立WebSocket连接(STOMP)

STOMP协议介绍 STOMP,Streaming Text Orientated Message Protocol,是流文本定向消息协议,是一种为MOM(Message Oriented Middleware,面向消息的中间件)设计的简单文本协议。 它提供了一个可互操作的连接格式,允许STOMP客户端与任意STOMP消息代理(Broker)进行交互,类似于OpenWire(一种二进制协议)。...

zhuasheng 1万+

Flutter 直接调用so动态库,或调用C/C++源文件内函数

我把 .so 文件尝试放过好几个目录/lib/,最终都会报这个错误,现在才知道库文件需要放在你根本想象不到的地方!!!尝试了一些方法还是不行后我放弃了 ffi,想着用 Flutter 的 MethodChannel 桥接 android/ios 原生,再让原生去调 native 层。一顿操作把Android端的搞定了,当然中间涉及到 Kotlin和C++ 层的数据类型映射的痛苦,而且业务函数也不像一个 helloworld 那么简单,别提有多痛苦了。

开发以大橘为重 8349

spring boot websocket stomp

本文描述在spring boot中如何使用基于stomp实现即时通信的功能。 spring boot 版本:2.1.2.RELEASE jdk8 Maven pom.xml <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-start...

kanbe_kotori的专栏 1309

如何在软件复位后保留指定RAM区域的数据

本文主要介绍S32K144的RAM retention功能

北极熊的脖子(16605192620@163.com) 1万+

如何在 UniApp 中接入讯飞语音听写功能 文末附vue3+vue2完整代码

在开发过程中,我遇到了讯飞接口返回空数据的问题。通过仔细检查传送的每一帧数据,我发现问题出在第一帧的配置信息以及 Base64 数据的切片。确保每一帧的数据正确且符合接口要求,问题就能够得到解决。希望这个过程能帮助你在项目中顺利对接讯飞语音识别。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 994

Spring Boot 2 中通过 WebSocket 发送 STOMP 消息

Spring boot websocket连接

Lance 2074

comsol如何实现五厚度的单元模拟?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值 。

**My Coding Family** 469

Spring实战之使用WebSocket和STOMP实现消息功能

本章参考内容《spring实战》集成篇之使用WebSocket和STOMP实现消息功能 使用WebSocket和STOMP实现消息功能 spring为WebSocket通信提供了支持,包括: 发送和接收消息的低层级API; 发送和接收消息的高级API; 用来发送消息的模板; 支持SockJS,用来解决浏览器端、服务器以及代理不支持WebSocket的问题。 我们来一一介绍其中的内容板块...

Coding马+ 1725

ZYNQ系列PS侧和PL侧DDR3或DDR4在AD(Altium Designer 25)中的layout布线规则约束

DDR3或DDR4的PCB布线规则通常有相对固定的要求,对应的,在PCB设计时有固定的约束设置。

FPGA艺术家的博客 785

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Spring WebSocket STOMP 消息传递项目推荐

Spring WebSocket STOMP 消息传递项目推荐 gs-messaging-stomp-websocket Using WebSocket to build an interactive web application :: Learn how to the send and receive message...

gitblog_00043的博客 732

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

spring websocket 5.05 基于stomp协议

WebSocket协议定义了两种类型的消息,文本和二进制,但其内容未定义。 为客户端和服务器定义了一种协商子协议的机制 - 即更高级别的消息传递协议,用于在WebSocket之上定义每种消息可以发送哪种消息,每种消息的格式和内容是什么等等 上。 子协议的使用是可选的,但是客户端和服务器需要就定义消息内容的一些协议达成一致。STOMP是一种简单的面向文本的消息传递协议,最初是为脚本语言(如Ruby,...

qq_19417513的博客 2254

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

SAP B1中文培訓教材_SDK

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

Spring Websocket Stomp 消息订阅推送实战

本人项目环境:IDE为Intellij IDEA 2018.1.4,Java version 1.8.0_172,Tomcat version 8.5.32。 学习完这个DEMO,能对在基于stomp协议上使用Spring组件通信有一定了解,可将之应用到发送系统消息,建立聊天室等功能实践中。 项目下载地址:https://gitee.com/starCat/spring-websocket-...

帅帅的廉颇的博客 6595

两个websocket相互通信_Spring Boot实现带STOMP的WebSocket

点击左上角,关注:“锅外的大佬”专注分享国外最新技术内容帮助每位开发者更优秀地成长WebSocket协议是应用程序处理实时消息的方法之一。最常见的替代方案是长轮询(long polling)和服务器推送事件(server-sent events)。这些解决方案中的每个都有其优缺点。在本文中,我将向您展示如何使用SpringBoot实现WebSocket。我将介绍服务器端和客户端设置,...

weixin_33198642的博客 1339

什么是stomp?spring-boot websocket stomp服务构建

https://my.oschina.net/genghz/blog/1796965 1、什么是WebSocket         WebSocket协议是基于TCP的一种网络协议。它实现了浏览器与服务器全双工(full-duplex)通信——允许服务器主动发送信息给客户端。         在没有WebSocket的时间里,我的实现web页面都是http,单向的请求-应答模式,但为了web...

z69183787的专栏 1792

Spring Cloud Gateway整合基于STOMP协议的WebSocket实战及遇到问题解决

本实例介绍了Spring Cloud Gateway整合基于STOMP协议的WebSocket的实现。开发了聊天功能,和用户在线状态。解决了一些问题

print_helloword的博客 2118
上一篇: Docker Compose 完整详解
下一篇: three.js 完整笔记
ab123768
博客等级 码龄3年 43粉丝 72原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ab123768

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值