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);

}

}

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