新闻中心
JS如何调用SpringWebSocket服务_JS调用SpringWebSocket服务的完整教程
前端通过STOMP over WebSocket与Spring后端通信,需引入sockjs-client和stompjs库;首先配置Spring WebSocket支持STOMP,定义端点如/ws、消息代理前缀/topic及应用前缀/app;前端使用SockJS连接/ws,通过Stomp.over建立STOMP客户端,连接成功后订阅/topic/greetings主题;调用stompClient.send("/app/hello", {}, JSON.stringify(data))发送消息至后端@Controller类的@MessageMapping方法;后端处理后通过@SendTo广播到/topic/greetings,所有订阅者接收并更新页面;页面卸载时应调用disconnect避免资源泄漏。关键点包括跨域配置、路径一致性、消息格式匹配。

前端通过J*aScript调用Spring WebSocket服务,主要依赖浏览器原生的 WebSocket API 与后端建立双向通信。Spring 提供了基于 STOMP(Simple Text Oriented Messaging Protocol)的 WebSocket 支持,因此前端通常使用 STOMP over WebSocket 的方式来连接和交互。
1. 确保后端已配置 Spring WebSocket + STOMP
在开始 JS 调用前,确认你的 Spring Boot 项目已正确配置 WebSocket 服务。以下是最基本的配置示例:
添加依赖(M*en):
spring-boot-starter-websocket
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/ws").setAllowedOriginPatterns("*").withSockJS();
}
@Override
public void configureMessageBroker(MessageBrokerRegistry registry) {
registry.setApplicationDestinationPrefixes("/app");
registry.enableSimpleBroker("/topic", "/queue");
}
}
创建消息处理 Controller:
@Controller
public class WsController {
@MessageMapping("/hello")
@SendTo("/topic/greetings")
public GreetingMessage greeting(HelloMessage message) throws Exception {
Thread.sleep(1000);
return new GreetingMessage("Hello, " + message.getName() + "!");
}
}
上面配置说明:
- /ws 是 WebSocket 连接端点
- /app/hello 是客户端发送消息的目标路径
- /topic/greetings 是广播消息的订阅主题
2. 前端引入 STOMP.js 并连接 WebSocket
由于原生 WebSocket 不支持 STOMP 协议,需引入 stomp.js 或 @stomp/stompjs 库。
安装 stompjs(推荐使用 npm):npm install @stomp/stompjs sockjs-client
或直接使用 CDN 引入:
const socket = new SockJS('/ws');
const stompClient = Stomp.over(socket);
stompClient.connect({}, function(frame) {
console.log('Connected: ' + frame);
// 订阅 /topic/greetings 主题
stompClient.subscribe('/topic/greetings', function(greeting) {
const message = JSON.parse(greeting.body);
console.log('Received: ' + message.content);
// 更新页面 DOM
document.getElementById("output").innerHTML += "<br>" + message.content;
});
}, function(error) {
console.error('STOMP connection error:', error);
});
3. 发送消息到 Spring 后端
连接成功后,可通过 stompClient.send() 向后端发送消息。
示例:发送消息触发 /app/hello
function sendMessage() {
const msg = { name: "张三" };
stompClient.send("/app/hello", {}, JSON.stringify(msg));
}
HTML 示例按钮:
Tanka
具备AI长期记忆的下一代团队协作沟通工具
146
查看详情
点击按钮后,前端发送消息 → Spring 处理 → 广播到 /topic/greetings → 所有订阅者收到响应。
4. 处理断开连接与错误
建议在页面卸载时关闭连接,避免资源浪费。
window.onbeforeunload = function() {
if (stompClient && stompClient.connected) {
stompClient.disconnect();
}
};
也可以监听网络中断、重连等状态,增强健壮性。
基本上就这些。只要后端配置好 STOMP 端点,前端用 stomp.js 连接、订阅、发消息,就能实现实时双向通信。不复杂但容易忽略细节,比如跨域、路径前缀、消息格式等,务必核对一致。
以上就是JS如何调用SpringWebSocket服务_JS调用SpringWebSocket服务的完整教程的详细内容,更多请关注其它相关文章!
# 滑块
# 英文字母网站推广
# 信宜三华李网站推广策划
# 忻州网站优化费用
# seo网站优化培训怎么样做
# 建材营销推广报价
# SEO单于
# 绍兴网站建设代码大全
# 陕西网站推广哪个好做
# 青岛低价网站建设
# 青海关键词排名获客软件
# 中文网
# 相关文章
# 推荐使用
# 就能
# 加载
# js开发spring教程
# 客户端
# 如何使用
# 发送消息
# 后端
# web
# app
# 浏览器
# npm
# json
# 前端
# js
# html
# java
# javascript
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
C++ explicit关键字防止隐式转换_C++构造函数安全规范
如何在更新Composer依赖后自动运行测试_使用post-update-cmd钩子触发PHPUnit
手机屏幕碎了但能正常使用怎么办 手机外屏碎裂的修复建议
qq游戏大厅官方下载_qq游戏免费下载安装入口
探索高级语言到C/C++的转译路径:以Go为例及内存管理策略
如何在离线环境中使用Composer_Composer离线安装依赖包的技巧与策略
J*aScript DOM操作:高效清空列表元素的策略与实践
PDF怎么合并PDF并保持格式_PDF合并文件保持排版教程
mysql通配符支持数字匹配吗_mysql通配符能否用于数字匹配的解析
微信群消息显示延迟如何解决 微信群消息刷新优化方法
Win11怎么安装Linux子系统 Win11 WSL2安装Ubuntu及环境配置指南
漫蛙官网正版漫画入口 漫蛙2官方网页登录地址
解决Flask中Quill编辑器内容提交失败及TypeError的指南
css滚动区域卡顿如何改善_css滚动问题用will-change优化渲染
如何创建独立于主系统的J*a运行环境_隔离式环境搭建策略
中兴Axon42Ultra怎样在文件App筛图_iPhone中兴Axon42Ultra文件App筛图【图片筛选】
单射、满射与双射的关系 一文理清所有逻辑
Win11截图该按哪些键 Win11截屏完整流程解析【教程】
C++的std::forward_list怎么用_C++ STL中单向链表容器的特点与应用
PDF文件体积过大处理_PDF压缩技巧详解
C++如何比较两个字符串_C++ string compare函数与操作符对比
学习通网页版官方登录 超星学习通电脑端入口指南
Win11怎么设置鼠标主按键_Win11鼠标左右键功能互换
JUnit5/Mockito:优雅测试内部依赖与异常处理的实践
微信聊天记录怎么加密_微信聊天记录加密方法
Lar*el Form Request中唯一性验证在更新操作中的正确实现
Lar*el 8 多关键词数据库搜索优化实践
c++中为什么推荐使用using替代typedef_c++现代化类型别名
LINUX的perf命令入门_LINUX官方性能分析工具的使用与解读
服务端验证_j*ascript输入检查
Win11怎么修改默认浏览器_Windows 11设置Chrome为默认
2306选座时如何选靠窗位置_12306选座靠窗座位查看方法解析
win11怎么查看应用耗电情况 Win11电池设置查看应用能耗排行榜【优化】
ACG动漫视频网入口 ACG动漫*免费正版观看地址
J*a递归快速排序中静态变量导致数据累积的陷阱与解决方案
地铁跑酷免费秒玩入口链接 地铁跑酷小游戏免费秒玩网站
12306选座怎么选到临时改签座_12306改签选座策略与步骤
钉钉视频会议声音异常如何处理 钉钉会议音频修复技巧
处理Kafka消费者会话超时:深入理解消息处理语义与幂等性
晋江读书网页版在线登录 晋江读书电脑版官网
mc.js免安装版 mc.js一键畅玩入口
抖音网页版平台入口 抖音网页版官网在线访问教程
Node.js CSV 数据处理:基于字段值条件过滤整条记录的策略
mysql如何设置表访问权限_mysql表访问权限配置
在J*a中如何使用BigDecimal进行高精度计算_BigDecimal类应用指南
AO3网页版合集入口 Archive of Our Own同人作品浏览指南
J*a应用程序首次运行自动创建文件与目录的最佳实践
豆包手机助手发布技术预览版:直接嵌入手机系统!努比亚样机发售
Win11怎么开启高性能模式_Windows 11电源计划优化设置
网站内容防复制粘贴的实现策略与局限性


2025-11-11
浏览次数:次
返回列表