如何在Client中获取socket.io客户端的会话ID
我想在我的socket.io客户端获取客户端的会话ID。
这里是我的socket.io客户端:
var socket = new io.Socket(config.host, {port: config.port, rememberTransport: false}); // when connected, clear out display socket.on('connect',function() { console.log('dummy user connected'); }); socket.on('disconnect',function() { console.log('disconnected'); }); socket.connect(); return socket;
我想获得这个客户端的会话ID,我怎么能得到这个?
看看这个话题我的入门 。
更新:
var sio = require('socket.io'), app = require('express').createServer(); app.listen(8080); sio = sio.listen(app); sio.on('connection', function (client) { console.log('client connected'); // send the clients id to the client itself. client.send(client.id); client.on('disconnect', function () { console.log('client disconnected'); }); });
在socket.io> = 1.0上,connect事件触发后:
var socket = io('localhost'); var id = socket.io.engine.id
我只是有相同的问题/问题,并像这样解决(只有客户端代码):
var io = io.connect('localhost'); io.on('connect', function () { console.log(this.socket.sessionid); });
*请注意:从v0.9开始, set
和get
API已被废弃*
以下代码只能用于版本socket.io <0.9
请参阅 : http : //socket.io/docs/migrating-from-0-9/
这可以通过握手/授权机制来完成。
var cookie = require('cookie'); io.set('authorization', function (data, accept) { // check if there's a cookie header if (data.headers.cookie) { // if there is, parse the cookie data.cookie = cookie.parse(data.headers.cookie); // note that you will need to use the same key to grad the // session id, as you specified in the Express setup. data.sessionID = data.cookie['express.sid']; } else { // if there isn't, turn down the connection with a message // and leave the function. return accept('No cookie transmitted.', false); } // accept the incoming connection accept(null, true); });
所有分配给数据对象的属性现在都可以通过socket.io连接对象的handshake属性来访问。
io.sockets.on('connection', function (socket) { console.log('sessionID ' + socket.handshake.sessionID); });
因为某些原因
socket.on('connect', function() { console.log(socket.io.engine.id); });
没有为我工作。 然而
socket.on('connect', function() { console.log(io().id); });
为我工作。 希望这对于也有问题的人有帮助。 顺便说一句,我使用Socket IO> = 1.0。
尝试从你的代码socket.socket.sessionid即。
var socket = io.connect('http://localhost'); alert(socket.socket.sessionid); var sendBtn= document.getElementById('btnSend'); sendBtn.onclick= function(){ var userId=document.getElementById('txt1').value; var userMsg = document.getElementById('txt2').value; socket.emit('sendto',{username: userId, message: userMsg}); }; socket.on('news', function (data) { console.log(data); socket.emit('my other event', { my: 'data' }); }); socket.on('message',function(data){ console.log(data);});
试试这个方法。
var socket = io.connect('http://...'); console.log(socket.Socket.sessionid);