首页 » 网站建设 » websocketphp点对点技巧_SpringBootWebSocket实现简单的数据推送

websocketphp点对点技巧_SpringBootWebSocket实现简单的数据推送

访客 2024-11-28 0

扫一扫用手机浏览

文章目录 [+]

好了,大略的理解一下,我们来看看springboot+websocket实现推送的过程,以下是个大略的demo。

搭建过程首先我们初始化一个spring boot项目,大家可以根据自己的习气辞官网下载或者用idea来天生,这里我不多说,紧张的是引入websocket依赖,如下图;

websocket依赖

websocketphp点对点技巧_SpringBootWebSocket实现简单的数据推送

编写websocket配置类,这里直接new 一个ServerEndpointExporter就行了

@Componentpublic class WebSocketConfig { @Bean public ServerEndpointExporter serverEndpointExporter() { return new ServerEndpointExporter(); }}编写websocket推送做事端

@Component@ServerEndpoint(value = "/websocket/logging")public class LoggingWSServer { private static final Logger LOGGER = LoggerFactory.getLogger(LoggingWSServer.class); private static Map<String, Session> sessionMap = new ConcurrentHashMap<>(); private static Gson gson = new Gson(); private static Map<String,Object> map = new ConcurrentHashMap<>(); @OnOpen public void onOpen(Session session) { new Thread(() -> {// 这里大家可以根据业务来优化,利用线程池等手段 while(sessionMap.get(session.getId()) != null) { try { List<AaaServer> list = aaaServerService.findList(); if(session.isOpen()) { send(session, gson.toJson(list)); } Thread.sleep(5000); } catch (InterruptedException e) { e.printStackTrace(); } } }).start(); } @OnClose public void onClose(Session session) { sessionMap.remove(session.getId()); LOGGER.info("session断开连接:{}" , session.getId()); } @OnMessage public void onMessage(String message,Session session) { LOGGER.info("收到客户真个:{}",message); map.put("ret",message); send(session,gson.toJson(map)); } private void send(Session session, String toJson) { try { session.getBasicRemote().sendText(toJson); } catch (IOException e) { LOGGER.error("发送缺点:{}",e.getMessage()); } } }

做事端api阐明:

websocketphp点对点技巧_SpringBootWebSocket实现简单的数据推送
(图片来自网络侵删)
OnOpen:在这个端点连接时被调用;OnClose:与OnOpen相反,连接断开时被调用OnMessage:做事端收到客户真个信息时被调用OnError:当然还有这个,上面没有列出,这是发送缺点时被调用编写前端页面,这里只展示js

//websocket工具 var websocket = null; //判断当前浏览器是否支持WebSocket if ('WebSocket' in window) { //动态获取域名或ip var hostname = window.location.hostname; port = window.location.port; websocket = new WebSocket("ws://"+hostname+":" + port + "/websocket/logging"); } else { console.error("不支持WebSocket"); } //连接发生缺点的回调方法 websocket.onerror = function (e) { console.error("WebSocket连接发生缺点" + e); }; //连接成功建立的回调方法 websocket.onopen = function () { console.log("WebSocket连接成功") }; //吸收到的回调方法 websocket.onmessage = function (event) { console.log("数据是:", event.data ); var data = JSON.parse(event.data); if (data.push) { // 内容 var temp = template('tpl_data',{data : data.push}); console.log("模板==" + temp); document.getElementById("tb").innerHTML = temp; } if(data.ret) { console.log(data.ret) alert(data.ret); } } //发送 $('#send').click(function () { websocket.send($('#sMsg').val()); });

前端页面把稳:

编写的时候一定要把稳一个地方,便是new WebSocket 的地址,一定要和做事端推送的那个地址相同,不然的话,这里吸收不到推送过来的数据。
其余,有些浏览器可能不支持websocket,也没紧要,可以利用sockjs或者stomp.js,这是基于websocket的上层协议,大家可以自行去理解以下。
不过要把稳,sockjs 处理的url是http或者https,不在因此ws开头的。
结语

本日就大略的先容到这里,有须要这个demo的,可以关注一下小编,后续小编会把代码上传到gitee,https://gitee.com/bigqianqian/springboot-websocket,可以理解下。
下篇文章小编将会先容websocket点对点推送和广播,喜好的朋友点个关注呗[奋斗][奋斗][奋斗],也可以动动手评论下,留下你的理解,小编与你共同发展!

相关文章

介绍皮肤设置,如何打造理想肌肤状态

随着科技的发展和人们对美的追求,皮肤设置已成为美容护肤的重要一环。如何根据皮肤类型、肤质、年龄等因素进行合理设置,已成为众多爱美人...

网站建设 2025-01-03 阅读1 评论0

介绍盖章制作,传承文化,彰显权威

自古以来,盖章在我国文化中具有重要的地位。从古代的官印、私印到现代的公章、合同章,盖章已成为一种独特的文化符号,承载着丰富的历史内...

网站建设 2025-01-03 阅读1 评论0

介绍监控破坏,技术手段与法律风险并存

随着科技的飞速发展,监控设备已遍布大街小巷,成为维护社会治安的重要手段。一些不法分子为了逃避法律制裁,开始研究如何破坏监控设备。本...

网站建设 2025-01-03 阅读1 评论0

介绍登录不上之谜,技术故障还是人为疏忽

随着互联网的普及,登录已成为人们日常生活中不可或缺的一部分。在享受便捷的登录不上这一问题也困扰着许多用户。本文将深入剖析登录不上之...

网站建设 2025-01-03 阅读1 评论0

介绍电脑键盘调出方法,让操作更高效

随着科技的发展,电脑已经成为了我们日常生活中不可或缺的工具。而电脑键盘,作为电脑输入设备,更是我们与电脑进行交流的桥梁。你是否知道...

网站建设 2025-01-03 阅读1 评论0

介绍磁力链,高效便捷的文件下载利器

在互联网高速发展的今天,文件下载已成为日常生活中不可或缺的一部分。而磁力链作为一种新型的文件下载方式,凭借其高效、便捷的特点,受到...

网站建设 2025-01-03 阅读1 评论0