springcloud + vue 项目集成websocket,后端java,给出具体的实现
时间: 2024-03-27 10:37:12 浏览: 13
好的,下面给出一个简单的 springcloud + vue 项目集成websocket 的具体实现,后端使用 java 语言。
前端代码(Vue.js):
```html
<template>
<div>
<h2>WebSocket Demo</h2>
<input type="text" v-model="message" placeholder="请输入消息" />
<button @click="sendMessage">发送</button>
<ul>
<li v-for="msg in messages">{{ msg }}</li>
</ul>
</div>
</template>
<script>
export default {
data() {
return {
message: "",
messages: [],
socket: null
};
},
mounted() {
// 连接 WebSocket 服务器
this.socket = new WebSocket("ws://localhost:8080/ws");
// 监听 WebSocket 服务器发送的消息
this.socket.onmessage = event => {
let message = event.data;
this.messages.push(message);
};
},
methods: {
sendMessage() {
// 发送消息到 WebSocket 服务器
this.socket.send(this.message);
this.message = "";
}
}
};
</script>
```
后端代码(Spring Boot):
```java
import org.springframework.context.annotation.Configuration;
import org.springframework.web.socket.*;
import org.springframework.web.socket.config.annotation.*;
import org.springframework.web.socket.handler.*;
@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {
@Override
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
registry.addHandler(new MyWebSocketHandler(), "/ws").setAllowedOrigins("*");
}
}
class MyWebSocketHandler extends TextWebSocketHandler {
private List<WebSocketSession> sessions = new ArrayList<>();
@Override
public void afterConnectionEstablished(WebSocketSession session) {
sessions.add(session);
}
@Override
protected void handleTextMessage(WebSocketSession session, TextMessage message) {
// 将消息发送给所有连接的客户端
for (WebSocketSession s : sessions) {
try {
s.sendMessage(message);
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
```
在这个例子中,前端页面包括一个输入框、一个发送按钮和一个消息列表,用户在输入消息后,点击发送按钮,会向后端发送一个 WebSocket 消息,后端接收到消息之后,将消息发送给所有连接的客户端。
需要注意的是,这个例子中的 WebSocket 服务器地址是`ws://localhost:8080/ws`,如果您的服务器地址不同,需要将代码中的地址替换成实际的地址。
另外,这个例子只是一个简单的演示,实际的 WebSocket 项目可能需要更多的功能和处理逻辑,需要根据具体的需求进行设计和开发。