How to get session id on the client side? (WebSocket)

匿名 (未验证) 提交于 2019-12-03 08:46:08

问题:

Is there any way to do this?

Client side:

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

Server side is not important. After the code above has been executed I need to know my session id.

回答1:

You can get it from url without making any changes into SockJS library.

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:

The SockJS constructor has an option parameter and there you can pass a custom session id generator as a function:

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


回答3:

To get session id we need to make some changes into SockJS library.
The string

var connid = utils.random_string(8); 

is used to get our id. So, we need only complete it like this:

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

and then we can read this field from the client code:

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

And if we need to know session id before calling connect method we can modify SockJS' constructor and connect method to use client-passed value.



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!