1、WebSocketConfig 配置类
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.socket.config.annotation.EnableWebSocket;
import org.springframework.web.socket.server.standard.ServerEndpointExporter;
@Configuration
@EnableWebSocket
public class WebSocketConfig {
@Bean
public ServerEndpointExporter serverEndpointExporter() {
return new ServerEndpointExporter();
}
}
2、WebSocket 消息发送接收
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import org.springframework.util.ObjectUtils;
import javax.websocket.*;
import javax.websocket.server.PathParam;
import javax.websocket.server.ServerEndpoint;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
@Slf4j
@Component
@ServerEndpoint(value = "/web/{id}")
public class WebSocketProcess {
private static ConcurrentHashMap<Long, WebSocketProcess> concurrentHashMap = new ConcurrentHashMap<>(16);
Session session;
{
.session = session;
concurrentHashMap.put(id, );
log.info(, id);
}
{
concurrentHashMap.remove(id);
log.info(, id);
}
{
log.info(, id, message);
}
{
log.error(, error);
}
Exception {
concurrentHashMap.get(id);
(!ObjectUtils.isEmpty(webSocketProcess)) {
(webSocketProcess.session.isOpen()) {
webSocketProcess.session.getBasicRemote().sendText(message);
} {
log.error(, id);
}
} {
log.error(, id);
}
}
Exception {
log.info(, concurrentHashMap.size());
Set<Map.Entry<Long, WebSocketProcess>> entries = concurrentHashMap.entrySet();
(Map.Entry<Long, WebSocketProcess> entry : entries) {
entry.getKey();
entry.getValue();
webSocketProcess.session.isOpen();
(sessionOpen) {
webSocketProcess.session.getBasicRemote().sendText(msg);
} {
log.info(, cid);
}
}
}
}