SpringBoo+vue3整合讯飞星火3.5通过webscoket实现聊天功能(全网首发)附带展示效果
由于原代码较为复杂,以下是一个简化版本的WebSocket聊天服务器端代码示例,使用Spring Boot和WebSocket:
import org.springframework.stereotype.Component;
import org.springframework.web.socket.CloseStatus;
import org.springframework.web.socket.TextMessage;
import org.springframework.web.socket.WebSocketSession;
import org.springframework.web.socket.handler.TextWebSocketHandler;
import java.io.IOException;
import java.util.concurrent.ConcurrentHashMap;
@Component
public class ChatWebSocketHandler extends TextWebSocketHandler {
private static final ConcurrentHashMap<String, WebSocketSession> users = new ConcurrentHashMap<>();
@Override
public void afterConnectionEstablished(WebSocketSession session) throws Exception {
users.put(session.getId(), session);
System.out.println("用户连接成功,用户数量:" + users.size());
}
@Override
protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {
String payload = message.getPayload();
System.out.println("收到消息:" + payload);
// 转发消息给所有在线用户
users.forEach((key, userSession) -> {
if (!session.getId().equals(key)) {
sendMessage(userSession, payload);
}
});
}
@Override
public void afterConnectionClosed(WebSocketSession session, CloseStatus status) throws Exception {
users.remove(session.getId());
System.out.println("用户断开连接,用户数量:" + users.size());
}
private void sendMessage(WebSocketSession session, String message) {
try {
session.sendMessage(new TextMessage(message));
} catch (IOException e) {
e.printStackTrace();
}
}
}
这段代码使用了ConcurrentHashMap
来存储活跃的WebSocket会话,以确保在多线程环境下的安全性。当WebSocket连接建立时,会话被添加到users
映射中;收到的消息会被广播到所有其他的在线用户。当连接关闭时,会话将从映射中移除。这个简化版本没有包含细节如加密、认证以及错误处理,但它展示了如何使用Spring Boot和WebSocket来实现基本的聊天功能。
评论已关闭