| |
|
|
开发:
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图书馆 购物 三丰科技 阅读网 日历 万年历 2025年11日历 | -2025/11/21 8:34:24- |
|
| 网站联系: qq:121756557 email:121756557@qq.com IT数码 |