websocket重新配置發送指定命令--2基類

本次將連接人數、發送還是連接的狀態、頁面信息處理加以完善

如果您這邊分開調用理解的不是太好可以借鑑我之前發佈的websocket專題1~5參考查閱(忘記了是否都被髮布)

WSBase   java文件 --打印日誌(連接狀態,斷開狀態、發送數據)

import java.io.IOException;

import javax.websocket.OnClose;

import javax.websocket.OnMessage;

import javax.websocket.OnOpen;

import javax.websocket.Session;

import javax.websocket.server.PathParam;

import javax.websocket.server.ServerEndpoint;

import org.apache.log4j.Logger;

/**

* WebSocket基類

*/

@ServerEndpoint("/wsbase")

public class WSBase {

/**

* Log4j 日誌輸出

*/

private static final Logger log = Logger.getLogger(WSBase.class);

/**

* 客戶端連接會話

*/

private Session session;

/**

* 獲取客戶端連接會話

* @return

*/

public Session getSession() {

return this.session;

}

/**

* 設置客戶端連接會話

* @param session

*/

public void setSession(Session session) {

this.session = session;

}

/**

* 有新連接接入時調用

* @param session

*/

@OnOpen

public void onOpen(@PathParam("clientId") String clientId,Session session){

this.session = session;

/**

* 將當前連接放入到連接池並將在線連接數加1

*/

WebSocketPool.wsSet.add(this);

WebSocketPool.addOnLineCount();

log.info("有新的連接接入,當前在先連接數:" + WebSocketPool.getOnLineCount());

}

/**

* 有連接斷開時調用

*/

@OnClose

public void onClose(){

/**

* 將斷開的連接從連接池中去除並將在線連接數減1

*/

WebSocketPool.wsSet.remove(this);

WebSocketPool.subOnLineCount();

log.info("有連接斷開,當前在先連接數:" + WebSocketPool.getOnLineCount());

}

/**

* 客戶端發送消息時調用

* @param obj

* @param session

*/

@OnMessage

public void onMessage(String msg,Session session){

log.info("接收到客戶端消息:" + msg);

/**

* 將消息廣播發送到所有連接進來的客戶端

*/

for(WSBase item : WebSocketPool.wsSet){

try {

item.sendMessage(msg);

} catch (Exception e) {

log.error(e.getMessage(), e);

continue;

}

}

}

public void sendMessage(String msg) throws IOException{

this.session.getBasicRemote().sendText(msg);

}

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章