ActiveMQ、Stomp、SockJS入门级应用
使用ActiveMQ、Stomp、SockJS实现实时在线聊天
ActiveMQ : 强大的开源即时通讯和集成模式的服务器。在本项目中充当消息代理服务器,stomp协议服务端。
安装:在官网下载,直接解压缩,运行cmd,进入bin目录执行 activemq.bat start;linux中执行 ./activemq start。
Stomp:stomp是一个文本定向通讯协议。本项目使用stomp协议基于JavaScript的客户端库 stomp.js
安装:下载stomp.js,引入项目中
SockJS:SockJS是WebSocket的JavaScript库,是webSocket的实现
安装:下载SockJS.js,引入项目中
第一步 : 创建JavaWeb项目,配置Maven依赖,依赖如下
1 <properties> 2 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 3 <spring.version>4.2.4.RELEASE</spring.version> 4 </properties> 5 6 <dependencies> 7 <dependency> 8 <groupId>org.springframework</groupId> 9 <artifactId>spring-webmvc</artifactId> 10 <version>${spring.version}</version> 11 </dependency> 12 13 <dependency> 14 <groupId>org.springframework</groupId> 15 <artifactId>spring-websocket</artifactId> 16 <version>${spring.version}</version> 17 </dependency> 18 19 <dependency> 20 <groupId>org.springframework</groupId> 21 <artifactId>spring-messaging</artifactId> 22 <version>${spring.version}</version> 23 </dependency> 24 25 <dependency> 26 <groupId>io.projectreactor</groupId> 27 <artifactId>reactor-net</artifactId> 28 <version>2.0.7.RELEASE</version> 29 </dependency> 30 31 <dependency> 32 <groupId>io.netty</groupId> 33 <artifactId>netty-all</artifactId> 34 <version>4.0.33.Final</version> 35 </dependency> 36 37 38 <dependency> 39 <groupId>com.fasterxml.jackson.core</groupId> 40 <artifactId>jackson-databind</artifactId> 41 <version>2.6.4</version> 42 </dependency> 43 44 <dependency> 45 <groupId>javax.servlet</groupId> 46 <artifactId>javax.servlet-api</artifactId> 47 <version>3.1.0</version> 48 <scope>provided</scope> 49 </dependency> 50 51 52 </dependencies>
第二步:配置消息终端,在SpringMVC配置文件中加入如下配置
<websocket:message-broker application-destination-prefix="/app"> <websocket:stomp-endpoint path="/stomp"> <websocket:sockjs /> </websocket:stomp-endpoint> <websocket:stomp-broker-relay prefix="/topic,/queue" relay-host="localhost" relay-port="61613" heartbeat-receive-interval="20000" heartbeat-send-interval="20000" /> </websocket:message-broker>
第三步:编写消息处理代码
package com.its.controller; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.messaging.handler.annotation.MessageMapping; import org.springframework.messaging.simp.SimpMessagingTemplate; import org.springframework.stereotype.Controller; @Controller public class MessageController { @Autowired private SimpMessagingTemplate template; @MessageMapping("channel") public String send(String message){ String text = message; template.convertAndSend("/topic/pinkzhuang",text); return text; } }
第四步:编写页面消息收发逻辑,页面要引入stomp.js和SockJS.js
function connect(){ var socket = new SockJS("http://localhost:8080/ActivityMQStomp/stomp"); stompClient = Stomp.over(socket); stompClient.connect({},function(frame){ setConnected(true); console.log("Connected: " + frame); stompClient.subscribe("/topic/pinkzhuang",function(greeting){ showGreeting(greeting.body); }); }); } function disconnect(){ stompClient.disconnect(); } function sendMessage(message){ stompClient.send("/app/vince",{},name); }
第五步:可登录localhost:8161进入activeMQ的管理页面,初始账号密码均为admin,可以手动在管理页面发送消息
The End
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
2017-03-09 /etc/fstab修改及mkfs(e2label)相关应用与疑问
2016-03-09 qss 实践