2014-03-30 34 views
1

我試圖將所有的socket.io連接分組。 我想爲每個sails.js會話分配一組。 我的第一個目標是同時驗證所有選項卡。在socket.io中自定義onConnect時Sailsjs會話訪問

於是,我就在config/sockets.js喜歡與onConnect要做到這一點:

onConnect: function(session, socket) { 
    // By default: do nothing 
    // This is a good place to subscribe a new socket to a room, inform other users that 
    // someone new has come online, or any other custom socket.io logic 
    if (typeof session.socket == 'undefined'){ 
    session.socket = []; 
    } 
    session.socket.push(socket.id); 
    session.save(); 

    console.log(session, socket); 
}, 

// This custom onDisconnect function will be run each time a socket disconnects 
onDisconnect: function(session, socket) { 

    // By default: do nothing 
    // This is a good place to broadcast a disconnect message, or any other custom socket.io logic 
    if(Array.isArray(session.socket)){ 
    var i = session.socket.indexOf(socket.id); 
    if(i != -1) { 
     session.socket.splice(i, 1); 
     session.save(); 
    } 
    } 
    console.log(session, socket); 
}, 

但我意識到,會議不保存我的修改。 我試過session.save,但sailsjs不知道req

Session.set(sessionKey, req.session, function (err) { 

我想訪問sails.js sesion,但我不知道該怎麼做。

我試圖尋找一個解決方案,但現在,6小時的搜索後,我覺得是時候該電源線一些幫助!

謝謝,對不起我的英文不好(我是法國人)。

回答

1

似乎有在onConnect實施和onDisconnect在帆v0.9.x.錯誤你可以解決它現在加入呼叫之前以下行session.save在這些方法:

global.req = {}; global.req.session = session; 

然後改變session.save()到:

session.save(function(){delete global.req;}); 

,將提供失蹤req VAR作爲一個全球性,然後在會話保存後刪除全局(爲了安全)。

注意,這個問題僅影響在onConnectonDisconnect法會;控制器代碼session.save內應該正常工作。

感謝您指出這一點!

+0

我發現這個錯誤仍然存​​在於版本0.10.0-rc8中,我試過了解決方法,但它只能在有時候起作用。有小費嗎? – aclave1