【问题标题】:How to get session id on the client side? (WebSocket)如何在客户端获取会话 ID? (网络套接字)
【发布时间】:2015-03-16 13:56:44
【问题描述】:

有什么办法吗?

客户端:

function connectWebSocket() {
    var socket = new SockJS('/socket');
    stompClient = Stomp.over(socket);
    stompClient.connect({}, function (frame) {
        console.log("connected");
    });
}

服务器端并不重要。执行上述代码后,我需要知道我的会话 ID。

【问题讨论】:

    标签: spring websocket stomp sockjs


    【解决方案1】:

    您可以从 url 获取它,而无需对 SockJS 库进行任何更改。

    var socket = new SockJS('/mqClient');
    stompClient = Stomp.over(socket);
    stompClient.connect({}, function(frame) {
            console.log(socket._transport.url); 
            //it contains ws://localhost:8080/mqClient/039/byxby3jv/websocket
            //sessionId is byxby3jv
        });
    

    【讨论】:

    【解决方案2】:

    SockJS 构造函数有一个选项参数,您可以在其中将自定义会话 id 生成器作为函数传递:

    let sessionId = utils.random_string(8);
    let socket = new SockJS('/socket', [], {
        sessionId: () => {
           return sessionId
        }
     });
    

    【讨论】:

      【解决方案3】:

      要获取会话 ID,我们需要对 SockJS 库进行一些更改。
      字符串

      var connid = utils.random_string(8);
      

      用于获取我们的 id。所以,我们只需要这样完成:

      var connid = utils.random_string(8);
      that.sessionId = connid;
      

      然后我们可以从客户端代码中读取这个字段:

      function connectWebSocket() {
          var socket = new SockJS('/socket');
          stompClient = Stomp.over(socket);
          stompClient.connect({}, function (frame) {
              console.log("connected, session id: " + socket.sessionId);
          });
      }
      

      如果我们需要在调用 connect 方法之前知道 session id,我们可以修改 SockJS 的构造函数和 connect 方法以使用客户端传递的值。

      【讨论】:

      • 我有一个问题。会话ID不会在服务器端生成吗?如何设置 sockjs 会话 ID
      猜你喜欢
      • 2011-10-22
      • 2014-10-01
      • 2014-07-24
      • 2012-01-20
      • 1970-01-01
      • 2017-02-17
      • 2012-06-24
      • 1970-01-01
      • 2017-09-05
      相关资源
      最近更新 更多