webSocket.java建立連線和關閉連線
* 建立連線
* @param session
*/
@OnOpen
public void start(Session session) {
try {
this.session = session;
this.id = UUID.randomUUID().toString();
logger.info("連線websocket,id=" + this.id);
} catch (Exception ex) {
logger.error("WebSocket.start(Session session)方法發生錯誤:"
+ ExceptionUtil.getStackMsg(ex));
}
}
其中@OnOpen表示建立連線
/**
* 關閉連線
*/
@OnClose
public void end() {
try {
logger.info("關閉WebSocket,id=" + this.getId());
WebSocketPool.removeWebSocket(null, this);
try {
if (this.session != null) {
this.session.close();
}
} catch (IllegalStateException e) {
logger.info("WebSocket前端斷開連線");
} catch (Exception e) {
logger.error("WebSocket關閉連接出錯", e);
}
} catch (Exception ex) {
logger.error("WebSocket.end()方法發生錯誤:"
+ ExceptionUtil.getStackMsg(ex));
}
}
@OnOpen表示關閉連線
/**
* 接收資料
* @param message
*/
@OnMessage
public void incoming(String message) {
try {
//
webSocketProcesser.process(message, this);
} catch (Exception ex) {
logger.error("WebSocket.incoming(String message)方法發生錯誤:"
+ ExceptionUtil.getStackMsg(ex));
}
}
其中 @OnMessage表示的是接收資料資訊。
/**
* 傳送資料
* @param msg
* @throws IOException
*/
public void sendMsg(String msg) throws IOException{
try {
try {
if(this.session.isOpen()){
this.session.getBasicRemote().sendText(msg);
}
// this.session.getBasicRemote().flushBatch();
} catch (IOException e) {
this.session.close();
WebSocketPool.removeWebSocket(null, this);
e.printStackTrace();
}
} catch (Exception ex) {
logger.error("WebSocket.sendMsg(String msg)方法發生錯誤:"
+ ExceptionUtil.getStackMsg(ex));
}
}