package com.nanjing.water.host.mqtt;
|
|
import org.slf4j.Logger;
|
import org.slf4j.LoggerFactory;
|
import org.springframework.core.annotation.Order;
|
import org.springframework.stereotype.Component;
|
|
import javax.websocket.OnClose;
|
import javax.websocket.OnMessage;
|
import javax.websocket.OnOpen;
|
import javax.websocket.Session;
|
import javax.websocket.server.ServerEndpoint;
|
import java.util.concurrent.CopyOnWriteArraySet;
|
|
@Component
|
@ServerEndpoint("/webSocket")
|
@Order(3)
|
public class WebSocket {
|
private static final Logger log = LoggerFactory.getLogger(WebSocket.class);
|
|
private Session session;
|
|
private static CopyOnWriteArraySet<WebSocket> webSocketSet=new CopyOnWriteArraySet<>();
|
|
@OnOpen
|
public void onOpen(Session session){
|
this.session=session;
|
webSocketSet.add(this);
|
log.info("【websocket消息】 有新的连接,总数:{}",webSocketSet.size());
|
}
|
|
@OnClose
|
public void onClose(){
|
webSocketSet.remove(this);
|
log.info("【websocket消息】 连接断开,总数:{}",webSocketSet.size());
|
}
|
|
@OnMessage
|
public void onMessage(String message){
|
log.info("【websocket消息】 收到客户端发来的消息:{}",message);
|
}
|
|
public static void sendMessage(String message){
|
for(WebSocket webSocket:webSocketSet){
|
log.info("【websocket消息】 广播消息,message={}",message);
|
try {
|
webSocket.session.getBasicRemote().sendText(message);
|
}catch (Exception e){
|
e.printStackTrace();
|
}
|
}
|
}
|
|
}
|