springBoot下開發(fā)webSocket的sessionId問題

1.具體使用這里不展開,通過繼承TextWebSocketHandler類重寫了其父類AbstractWebSocketHandler的幾個相關方法

/**
 * Created by MZS on 2019/4/9.
 */
public class Test extends TextWebSocketHandler {
    
    /**
     * 建立連接之后
     *
     * @param session
     * @throws Exception
     */
    @Override
    public void afterConnectionEstablished(WebSocketSession session) throws Exception {
        super.afterConnectionEstablished(session);
    }

    /**
     * 收到消息
     *
     * @param session
     * @param message
     * @throws Exception
     */
    @Override
    public void handleMessage(WebSocketSession session, WebSocketMessage<?> message) throws Exception {
        super.handleMessage(session, message);
    }
    
/**
     * 收到消息
     *
     * @param session
     * @param message
     * @throws Exception
     */
    @Override
    protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {
        super.handleTextMessage(session, message);
    }


    
    /**
     * 通道發(fā)送error時
     *
     * @param session
     * @param exception
     * @throws Exception
     */
    @Override
    public void handleTransportError(WebSocketSession session, Throwable exception) throws Exception {
        super.handleTransportError(session, exception);
    }
    

    /**
     * 通道關閉后
     *
     * @param session
     * @param status
     * @throws Exception
     */
    @Override
    public void afterConnectionClosed(WebSocketSession session, CloseStatus status) throws Exception {
        super.afterConnectionClosed(session, status);
    }

}

2.這個的webSocket是由tomcat維護的,具體的sessionId的生成在org.apache.tomcat.websocket.WsSession中.

        this.id = Long.toHexString(ids.getAndIncrement());

是一個遞增的16進制并轉為字符串,每次重啟服務,這個id的計數(shù)又會重新從0開始.
如果建立了多個通道,那他們的id可能為(0,1818,70cc).
因為通道斷開,對應的webSocketSession對象被釋放,所以不同通道直接的id可能是不連續(xù)的.

3.由于在業(yè)務中有用到這個id,但對于16進制感覺不合適,想對其生成規(guī)則進行重寫.

但在WsSession中id屬性是使用final修飾的,無法進行修改,所以只能作罷
因為對webSocket的使用經(jīng)驗比較少,所以就不再考慮使用其他方案對其進行改進.
后續(xù)會嘗試去研究一下在聊天,游戲領域對于webSocket是如何進行使用的.

    private final String id;

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 原文地址:http://www.ibm.com/developerworks/cn/java/j-lo-WebSo...
    敢夢敢當閱讀 9,032評論 0 50
  • Servlet:Sun公司制訂的一種用來擴展Web服務器功能的組件規(guī)范。當瀏覽器將請求發(fā)送給Web服務器(比如:a...
    南山伐木閱讀 631評論 0 4
  • 敬愛的王院長,智慧的高管們,勤奮的家人們,大家晚上好,我是視光中心執(zhí)行部王玨,今天是2018年12月7日,是我日精...
    王玨_100e閱讀 236評論 0 1
  • 自從來天津上研究生,就總感覺自己像活在夢里一樣,腦袋總是昏昏沉沉的,一種不真實的感覺永遠揮之不去,我也不知道為什么...
    叫大哥就不打你閱讀 183評論 0 0
  • 晚上看電視,想著早飯的事,于是乎,蒸饅頭吧,哈哈, 和面,酵母用溫水散開,加入白糖,嗯,和面面。 粗糙的一只手,至...
    至簡從心閱讀 3,284評論 95 56

友情鏈接更多精彩內(nèi)容