WebSocket汎用テンプレート
1606 ワード
@ServerEndpoint("/websocket/{userId}")
@Component
public class WebSocketServer {
private Logger logger = LoggerFactory.getLogger(WebSocketServer.class);
//concurrent Set, MyWebSocket 。
private static ConcurrentHashMap webSocketSet = new ConcurrentHashMap<>();
//
private Session session;
// id
private Long userId;
//
@OnMessage
public void handleMessage(Session session, String message) {
logger.info(" ");
}
//
@OnOpen
public void onOpen(Session session, @PathParam("userId")Long userId){
logger.info(" webSocket ");
this.session = session;
this.userId = userId;
webSocketSet.put(userId, this);
}
//
@OnClose
public void onClose() {
logger.info(" socket ");
webSocketSet.remove(userId);
}
//
@OnError
public void onError(Session session, Throwable err) {
logger.info(" ");
err.printStackTrace();
}
// ,
public void sendMessage(String message, Long userId) {
try {
if(webSocketSet.get(userId) != null) {
webSocketSet.get(userId).sendMessage(message);
}
} catch (Exception e) {
e.printStackTrace();
}
}
private void sendMessage(String message) throws IOException {
this.session.getBasicRemote().sendText(message);
}
}