2015-01-18 16 views
6

C'è un modo per farlo?Come ottenere l'ID di sessione sul lato client? (WebSocket)

lato client:

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

lato server non è importante. Dopo che il codice sopra è stato eseguito ho bisogno di sapere il mio ID di sessione.

risposta

2

Per ottenere l'id di sessione è necessario apportare alcune modifiche alla libreria SockJS.
La stringa

var connid = utils.random_string(8); 

viene utilizzato per ottenere il nostro id. Quindi, abbiamo bisogno solo di completare in questo modo:

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

e poi possiamo leggere questo campo dal codice client:

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

E se abbiamo bisogno di sapere id di sessione prima di chiamare il metodo connect possiamo modificare il costruttore di SockJS e collegare il metodo per utilizzare il valore passato dal client.

5

È possibile ottenerlo dall'URL senza apportare modifiche alla libreria 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 
    }); 
+0

Ho fornito un espressione regolare per analizzare l'id di sessione fuori, in [mia rispondere a _Spring Websockets @SendToUser senza effettuare il login? _] (http://stackoverflow.com/a/43430736/1847378) – AndrewL

+1

Sai che cos'è/039 /? – zudduz

3

Il costruttore SockJS ha un parametro un'opzione e non ci si può passare un generatore di id di sessione personalizzato in funzione:

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