美文网首页
websocket重新配置发送指定命令--2基类

websocket重新配置发送指定命令--2基类

作者: Nenezsnp | 来源:发表于2018-09-05 10:57 被阅读9次

    本次将连接人数、发送还是连接的状态、页面信息处理加以完善

    如果您这边分开调用理解的不是太好可以借鉴我之前发布的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);

    }

    }

    相关文章

      网友评论

          本文标题:websocket重新配置发送指定命令--2基类

          本文链接:https://www.haomeiwen.com/subject/gvnowftx.html