springboot+vue实现websocket配置过程解析
1.引入依赖
org.springframework.boot spring-boot-starter-websocket 1.3.5.RELEASE
2.配置ServerEndpointExporter
@Configuration
publicclassWebSocketConfig{
@Bean
publicServerEndpointExporterserverEndpointExporter(){
returnnewServerEndpointExporter();
}
}
这个bean会自动注册使用了@ServerEndpoint注解声明的Websocketendpoint。
3.创建websocket的ServerEndpoint端点
@Component
@ServerEndpoint("/socket")
publicclassWebSocketServer{
/**
*全部在线会话
*/
privatestaticMaponlineSessions=newConcurrentHashMap<>();
/**
*当客户端打开连接:1.添加会话对象2.更新在线人数
*/
@OnOpen
publicvoidonOpen(Sessionsession){
onlineSessions.put(session.getId(),session);
}
/**
*当客户端发送消息:1.获取它的用户名和消息2.发送消息给所有人
*
*PS:这里约定传递的消息为JSON字符串方便传递更多参数!
*/
@OnMessage
publicvoidonMessage(Sessionsession,StringjsonStr){
}
/**
*当关闭连接:1.移除会话对象2.更新在线人数
*/
@OnClose
publicvoidonClose(Sessionsession){
onlineSessions.remove(session.getId());
}
/**
*当通信发生异常:打印错误日志
*/
@OnError
publicvoidonError(Sessionsession,Throwableerror){
error.printStackTrace();
}
/**
*公共方法:发送信息给所有人
*/
publicvoidsendMessageToAll(StringjsonMsg){
onlineSessions.forEach((id,session)->{
try{
session.getBasicRemote().sendText(jsonMsg);
}catch(IOExceptione){
e.printStackTrace();
}
});
}
}
4.前端配置连接与接收消息