Spring MVC中怎么利用webSocket保持长连接
发表于:2024-11-25 作者:千家信息网编辑
千家信息网最后更新 2024年11月25日,本篇文章给大家分享的是有关Spring MVC中怎么利用webSocket保持长连接,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。配置在
千家信息网最后更新 2024年11月25日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安全错误
数据库的锁怎样保障安全
宿州nas存储服务器找哪家
云服务器自己搭建还是租
落实保障网络安全责任
软件开发买轻薄本还是游戏本
如何找到服务器上的资料
网络安全方面教育优秀教案
网络安全ccss
vfr数据库程序设计
山西hp服务器维修维保价格
从网络安全角度分析电商安全
云服务器上下架宝贝
深圳正规软件开发费用
上海智能化软件开发定制价钱
中国网络安全测评中心
软件开发公司转管理层多少钱
护苗网络安全童谣
数据库如何使用事务串行化
dell服务器驱动自动
宝山区智能软件开发厂家直销
软考网络技术培训班
狼组网络安全
命令查询数据库版本
连云港高性能服务器供货厂
百度连接不上服务器是什么意思
皮皮虾网络技术有限公司
数据库异常死机
智合云服务器是真的吗
网络安全课程培训
郑州软件开发师薪资
北仑ios软件开发周期