我正在尝试将所有socket.io连接分组。 我想为每个sails.js会话创建一个组。 我的第一个目标是同时验证所有标签。
所以我尝试使用onConnect
中的config/sockets.js
来执行此操作:
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个小时的搜索,我觉得是时候需要一些帮助了!
谢谢,对不起我的英语不好(我是法国人)。
答案 0 :(得分:1)
Sails v0.9.x中onConnect
和onDisconnect
的实施似乎存在错误。您现在可以通过在这些方法中调用session.save
之前添加以下行来解决此问题:
global.req = {}; global.req.session = session;
然后将session.save()
更改为:
session.save(function(){delete global.req;});
这将提供缺少的req
var作为全局变量,然后在保存会话后删除全局(安全性)。
请注意,此问题仅影响onConnect
和onDisconnect
方法中的会话;控制器代码session.save
内部应该可以正常工作。
感谢您指出这一点!