java怎么实现在线聊天的代码springboot
时间: 2023-06-24 11:04:25 浏览: 52
实现在线聊天需要使用 WebSocket 技术,在 Spring Boot 中可以使用 Spring WebSocket 模块来实现。
首先,在 pom.xml 文件中添加以下依赖:
```xml
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
</dependencies>
```
然后,在 Spring Boot 中创建一个 WebSocket 配置类,代码如下:
```java
@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {
@Override
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
registry.addHandler(chatWebSocketHandler(), "/chat");
}
@Bean
public WebSocketHandler chatWebSocketHandler() {
return new ChatWebSocketHandler();
}
}
```
这里定义了一个 WebSocket 处理器,它将处理 /chat 路径的 WebSocket 连接请求。
接着,创建 ChatWebSocketHandler 类,代码如下:
```java
public class ChatWebSocketHandler extends TextWebSocketHandler {
private List<WebSocketSession> sessions = new ArrayList<>();
@Override
public void afterConnectionEstablished(WebSocketSession session) throws Exception {
sessions.add(session);
}
@Override
protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {
for (WebSocketSession s : sessions) {
if (!s.equals(session)) {
s.sendMessage(message);
}
}
}
@Override
public void afterConnectionClosed(WebSocketSession session, CloseStatus status) throws Exception {
sessions.remove(session);
}
}
```
这里定义了一个 WebSocket 处理器,它维护了一个 WebSocketSession 对象列表,用于保存所有连接到服务器的 WebSocket 连接。
当有新的 WebSocket 连接建立时,afterConnectionEstablished() 方法会被调用,此时将该 WebSocketSession 对象加入到列表中;当有 WebSocket 消息发送时,handleTextMessage() 方法会被调用,该方法会将消息发送给所有连接到服务器的 WebSocket 连接;当 WebSocket 连接关闭时,afterConnectionClosed() 方法会被调用,此时将该 WebSocketSession 对象从列表中移除。
最后,在前端页面中使用 JavaScript 来建立 WebSocket 连接,代码如下:
```javascript
var webSocket = new WebSocket("ws://" + location.host + "/chat");
webSocket.onopen = function(event) {
console.log("WebSocket connection opened.");
};
webSocket.onmessage = function(event) {
console.log("Received message: " + event.data);
};
webSocket.onclose = function(event) {
console.log("WebSocket connection closed.");
};
function sendMessage() {
var message = document.getElementById("message").value;
webSocket.send(message);
}
```
这里创建了一个 WebSocket 对象,它连接到 /chat 路径的 WebSocket 接口。当 WebSocket 连接建立、收到消息、关闭时,分别触发了 onopen、onmessage、onclose 事件。sendMessage() 函数用于向服务端发送消息。
以上就是使用 Spring Boot 实现在线聊天的代码。