Spring MVC中怎么利用webSocket保持长连接
发表于:2025-01-31 作者:千家信息网编辑
千家信息网最后更新 2025年01月31日,本篇文章给大家分享的是有关Spring MVC中怎么利用webSocket保持长连接,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。配置在
千家信息网最后更新 2025年01月31日Spring MVC中怎么利用webSocket保持长连接
本篇文章给大家分享的是有关Spring MVC中怎么利用webSocket保持长连接,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
配置
在
pom.xml
中加入包依赖javax javaee-api 7.0 provided org.springframework spring-websocket 4.3.13.RELEASE
Java后台实现代码
package com.netcar.tien.mobile;import java.io.IOException;import javax.websocket.OnClose;import javax.websocket.OnError;import javax.websocket.OnMessage;import javax.websocket.OnOpen;import javax.websocket.Session;import javax.websocket.server.ServerEndpoint;import org.springframework.web.socket.server.standard.SpringConfigurator;import com.netcar.tien.core.log.LogFactory;import com.netcar.tien.core.log.OnlineLog;/** * 保持socket连接 * @author JoyoDuan * Add by JoyoDuan on 2018-02-22 * * @ServerEndpoint 注解是一个类层次的注解,它的功能主要是将目前的类定义成一个websocket服务器端, * 注解的值将被用于监听用户连接的终端访问URL地址,客户端可以通过这个URL来连接到WebSocket服务器端 */@ServerEndpoint(value="/app/webSocket", configurator = SpringConfigurator.class)public class WebSocket { private OnlineLog logger = LogFactory.getOnlineLog(WebSocket.class); //socket连接会话,用于发送消息给客户端 private Session session; /** * 客户端连接成功 * @param session * @throws IOException */ @OnOpen public void onOpen(Session session) throws IOException { this.session = session;// System.out.println("WebSocket连接成功"); logger.info("WebSocket - 连接成功"); } /** * 收到消息时执行 * @param message * @param session * @throws IOException */ @OnMessage public void onMessage(String message, Session session) throws IOException { this.sendMessage("success"); } /** * 关闭时执行 */ @OnClose public void onClose() { logger.info("webSocket - 连接关闭");// System.out.println("webSocket连接关闭"); } /** * 连接错误时执行 * @param session * @param error */ @OnError public void onError(Session session, Throwable error) { logger.error("webSocket - 出错:" + error.getMessage());// System.out.println("webSocket出错" + error); } /** * 发送消息给客户端 * @param message * @throws IOException */ public void sendMessage(String message) throws IOException { this.session.getBasicRemote().sendText(message); }}
前端使用webSocket代码
/** * 与服务器保持长连接 * @param {boolean} [isReconnect] * @returns * @memberof HomePage */ connectWebSocket(isReconnect?: boolean) { let webSocket = new WebSocket(this.urlService.getWebSocketURL()); ///webSocket this.globalData.isLog && console.log('WebSocket:', 'WebSocket' in window); //上传经纬度的定时器 let uploadLngLatTimer: number = null; if (!isReconnect && !('WebSocket' in window)) { // this.nativeService.alert('您的手机不支持位置上传'); return; } //监测网络断开 this.nativeService.monitorNetworkDisconnect(() => { this.nativeService.toast('亲,网络连接中断了'); //递归,重新连接 this.connectWebSocket(true); return; }); //初始化webSocket webSocket.onopen = (event) => { this.globalData.isLog && !isReconnect && console.log('webSocket - 连接服务器成功!', event); this.globalData.isLog && isReconnect && console.log('webSocket - 重新连接服务器!', event); //每隔10秒上传一次经纬度 uploadLngLatTimer = setInterval(() => { //上传经纬度时定位当前位置 this.getAMapLocationByJS(true, () => { // webSocket.send('JoyoDuan' + new Date().getTime()); let params = { strokeNo: this.trip.strokeNo, strokeStatus: this.trip.strokeStatus, strokeLongitude: this.position.currentPosition.lngLat.lng, strokeLatitude: this.position.currentPosition.lngLat.lat, routeId: this.trip.routeId, carTypeId: this.trip.carTypeId || '' }; //发送经纬度到服务器 webSocket.send( Secret.encodeBase64String(JSON.stringify(params)) ); this.globalData.isLog && console.log('webSocket - 实时上传经纬度发送参数:', JSON.stringify(params)); }); }, TIMEOUT.UPLOAD_LNGLAT_TIMEOUT); }; //连接关闭时执行 webSocket.onclose = () => { this.globalData.isLog && console.log('webSocket - 连接服务器关闭!', event); //清除计时器,停止发送 clearInterval(uploadLngLatTimer); }; //连接出现错误时执行 webSocket.onerror = (event) => { this.globalData.isLog && console.log('webSocket - 连接服务器错误!', event); //10秒重连一次 setTimeout(() => { this.connectWebSocket(true); }, TIMEOUT.RECONNECT_WEB_SOCKET); }; //收到服务器消息时执行 webSocket.onmessage = (event) => { this.globalData.isLog && console.log('webSocket - 服务器发送的消息!', event); } }
以上就是Spring MVC中怎么利用webSocket保持长连接,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。
服务器
服务
消息
经纬
经纬度
成功
客户
客户端
注解
错误
代码
位置
更多
知识
篇文章
网络
实用
前端
功能
参数
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
军人手机网络安全大思想汇报
肖新光网络安全产业联盟
小熊店长软件开发
硬盘录像机服务器连接失败
上海卫计委 网络安全
网络安全保卫 龙岩
怎么查询惠普服务器价格
电子政务的网络安全包括哪些
服务器网络安全报告
观众数据库有哪些方面
网络安全法分工
实证分析数据库数据缺失
浦东新区网络技术开发咨询介绍
药剂与计算机网络技术哪个比较好
数据库第一范式的规则
内丘县财政统计数据库
中国模具大典数据库英文格式
三级网络技术考过指南下载
网络技术css
网络安全和渗透测试工具
二手服务器能买不
服务器禁ping安全策略
毕业论文文献数据库哪里找
我的世界导入图片到服务器
ibm服务器客服
服务器电源噪声频率带宽
公安网络技术人员考试
小手拉大手共筑网络安全
恐龙岛服务器搜索不到怎么办
网络技术实习期间的表现