用springboot和websocket写一个聊天功能
时间: 2023-07-01 14:06:22 浏览: 121
基于Springboot+websocket的web聊天项目(论文+程序设计源码+数据库文件)
5星 · 资源好评率100%
好的,下面是基于Spring Boot和WebSocket的聊天功能实现:
1. 创建一个Spring Boot Web项目
2. 添加WebSocket依赖
在pom.xml中添加如下依赖:
```xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
```
3. 创建WebSocket配置类
在项目中创建WebSocketConfig.java文件,并添加如下代码:
```java
@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {
@Override
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
registry.addHandler(chatWebSocketHandler(), "/chat").setAllowedOrigins("*");
}
@Bean
public WebSocketHandler chatWebSocketHandler() {
return new ChatWebSocketHandler();
}
}
```
这里注册了一个WebSocket的处理器,当客户端连接时,将会调用ChatWebSocketHandler类中的方法进行处理。
4. 创建WebSocket处理器
在项目中创建ChatWebSocketHandler.java文件,并添加如下代码:
```java
public class ChatWebSocketHandler extends TextWebSocketHandler {
private static final List<WebSocketSession> sessions = new CopyOnWriteArrayList<>();
@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) {
s.sendMessage(message);
}
}
@Override
public void afterConnectionClosed(WebSocketSession session, CloseStatus status) throws Exception {
sessions.remove(session);
}
}
```
这里实现了WebSocket处理器的三个方法:
- afterConnectionEstablished:当客户端与服务端建立连接时,会调用该方法。
- handleTextMessage:当接收到客户端发来的文本消息时,会调用该方法,将消息广播给所有客户端。
- afterConnectionClosed:当客户端与服务端断开连接时,会调用该方法。
5. 创建前端页面
在项目中创建chat.html文件,并添加如下代码:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>聊天室</title>
</head>
<body>
<div id="messages"></div>
<form onsubmit="return sendMessage()">
<input type="text" id="message" placeholder="请输入消息">
<button type="submit">发送</button>
</form>
<script>
var socket = new WebSocket("ws://" + location.host + "/chat");
socket.onmessage = function(event) {
var message = event.data;
var div = document.createElement("div");
div.innerText = message;
document.getElementById("messages").appendChild(div);
};
function sendMessage() {
var message = document.getElementById("message").value;
socket.send(message);
document.getElementById("message").value = "";
return false;
}
</script>
</body>
</html>
```
这里使用了WebSocket的JavaScript API,当用户输入消息后,通过WebSocket发送给服务端,并且将收到的消息展示在页面上。
6. 运行应用程序
在浏览器中打开http://localhost:8080/chat,即可看到聊天室页面,可以在多个浏览器窗口中打开该页面,进行聊天。
以上就是用Spring Boot和WebSocket实现聊天功能的步骤,希望对你有所帮助。
阅读全文