Websocket 实现聊天室的功能
首先我们要有查询spring.io的习惯, 官方文档很权威
聊天室,无非就是创建一个集合保存每个用户信息然后转发等, 当然websocket还有一个核心优点,就是主动推送。好了废话不多说代码整起。
@Component
@RestController
public class HttpAuthHandler extends TextWebSocketHandler {
/**
* socket 建立成功事件
*
* @param session
* @throws Exception
*/
@Override
public void afterConnectionEstablished(WebSocketSession session) throws Exception {
Object token = session.getAttributes().get("token");
if (token != null) {
// 用户连接成功,放入在线用户缓存
WsSessionManager.add(token.toString(), session);
} else {
throw new RuntimeException("用户登录已经失效!");
}
}
/**
* 接收消息事件
*
* @param session
* @param message
* @throws Exception
*/
@Override
protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {
// 获得客户端传来的消息
String payload = message.getPayload();
Object token = session.getAttributes().get("token");
LoggerUtils.showInfoLog("server 接收到 " + token + " 发送的 " + payload);
//{"cfrom":"aaa", "cto": "bbb", "cdata": "今天去哪玩", &