| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> vue+websocket+spring boot 日志自动刷新 -> 正文阅读 |
|
[网络协议]vue+websocket+spring boot 日志自动刷新 |
pom 依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <!-- websocket --> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifactId> </dependency> config package com.baidu.sobi.polestar.dataintegration.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.socket.server.standard.ServerEndpointExporter; /** * @author chongmengzhao * @version 0.1 * @date 2021/11/8 11:35 上午 * @Description TODO */ @Configuration public class WebSocketConfig { /** * 注入一个ServerEndpointExporter,该Bean会自动注册使用@ServerEndpoint注解申明的websocket endpoint */ @Bean public ServerEndpointExporter serverEndpointExporter() { return new ServerEndpointExporter(); } } OneWebSocket package com.baidu.sobi.polestar.dataintegration.socket; import com.baidu.sobi.polestar.common.utils.DateUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; 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 java.io.IOException; import java.util.concurrent.atomic.AtomicInteger; /** * @author chongmengzhao * @version 0.1 * @date 2021/11/8 11:37 上午 * @Description TODO */ @Slf4j @ServerEndpoint(value = "/test/one") @Component public class OneWebSocket { /** * 记录当前在线连接数 */ private static AtomicInteger onlineCount = new AtomicInteger(0); /** * 连接建立成功调用的方法 */ @OnOpen public void onOpen(Session session) { onlineCount.incrementAndGet(); // 在线数加1 log.info("有新连接加入:{},当前在线人数为:{}", session.getId(), onlineCount.get()); } /** * 连接关闭调用的方法 */ @OnClose public void onClose(Session session) { onlineCount.decrementAndGet(); // 在线数减1 log.info("有一连接关闭:{},当前在线人数为:{}", session.getId(), onlineCount.get()); } /** * 收到客户端消息后调用的方法 * * @param message 客户端发送过来的消息 */ @OnMessage public void onMessage(String message, Session session) { log.info("服务端收到客户端[{}]的消息:{}", session.getId(), message); this.sendMessage("Hello, " + message, session); } @OnError public void onError(Session session, Throwable error) { log.error("发生错误"); error.printStackTrace(); } /** * 服务端发送消息给客户端 */ private void sendMessage(String message, Session toSession) { String msg = ""; while (true) { try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } msg = msg + DateUtil.toNow() + "\n"; try { toSession.getBasicRemote().sendText(msg); } catch (IOException e) { e.printStackTrace(); } } // try { // log.info("服务端给客户端[{}]发送消息{}", toSession.getId(), message); // toSession.getBasicRemote().sendText(message); // } catch (Exception e) { // log.error("服务端发送消息给客户端失败:{}", e); // } } } vue 页面 <template> <div> <el-input v-model="inputTxt"/> <el-button @click="send">Send</el-button> <el-button @click="closeWebSocket">Close</el-button> <div id="msg"></div> </div> </template> <script> export default { data() { return { websock: undefined, inputTxt: undefined, }; }, created() { // 页面刚进入时开启长连接 this.initWebSocket(); }, destroyed: function() { // 页面销毁时关闭长连接 this.websocketclose(); }, methods: { closeWebSocket () { this.websock.close(); }, send () { this.websocketsend(this.inputTxt); }, initWebSocket () { // ws地址 const wsuri = 'ws://******/dataInteg' + '/test/one'; this.websock = new WebSocket(wsuri); this.websock.onopen = this.websocketsend; // 一进入就加载后端服务 this.websock.onerror = this.websocketonerror; this.websock.onmessage = this.websocketonmessage; this.websock.onclose = this.websocketclose; }, websocketonopen() { console.log('WebSocket连接成功'); }, websocketonerror(e) { // 错误 console.log('WebSocket连接发生错误'); }, websocketonmessage(e) { // 数据接收 const redata = e.data; // 注意:长连接我们是后台直接1秒推送一条数据, // 但是点击某个列表时,会发送给后台一个标识,后台根据此标识返回相对应的数据, // 这个时候数据就只能从一个出口出,所以让后台加了一个键,例如键为1时,是每隔1秒推送的数据,为2时是发送标识后再推送的数据,以作区分 console.log(redata); document.getElementById('msg').innerHTML += redata + '<br/>'; }, websocketsend(agentData) { // 数据发送 this.websock.send(agentData); }, websocketclose(e) { // 关闭 console.log('connection closed (' + e.code + ')'); }, }, }; </script> <style lang='less' scoped> div { margin-top: 60px; } </style> |
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 6:43:00- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |