unify request as a store key for both http and websockets calls

v1.18.x
Aziz Khoury 9 years ago
parent 509676fdf4
commit 53e9627001

@ -1,4 +1,6 @@
var path = require('path'); var path = require('path');
var sockets = require('path');
var websockets = require('../socket.io');
var continuationLocalStorage = require('continuation-local-storage'); var continuationLocalStorage = require('continuation-local-storage');
var APP_NAMESPACE = require(path.join(__dirname, '../../package.json')).name; var APP_NAMESPACE = require(path.join(__dirname, '../../package.json')).name;
var namespace = continuationLocalStorage.createNamespace(APP_NAMESPACE); var namespace = continuationLocalStorage.createNamespace(APP_NAMESPACE);
@ -7,18 +9,14 @@ var cls = {};
cls.http = function (req, res, next) { cls.http = function (req, res, next) {
namespace.run(function() { namespace.run(function() {
namespace.set('http', {req: req, res: res}); namespace.set('request', req);
next(); next();
}); });
}; };
cls.socket = function (socket, payload, event, next) { cls.socket = function (socket, payload, event, next) {
namespace.run(function() { namespace.run(function() {
namespace.set('ws', { namespace.set('request', websockets.reqFromSocket(socket, payload, event));
socket: socket,
payload: payload,
// if it's a null event, then we grab it from the payload
event: event || ((payload || {}).data || [])[0]});
next(); next();
}); });
}; };
@ -33,7 +31,6 @@ cls.set = function (key, value) {
cls.setItem = cls.set; cls.setItem = cls.set;
cls.getItem = cls.set; cls.getItem = cls.set;
cls.getNamespace = cls.storage;
cls.namespace = namespace; cls.namespace = namespace;
cls.continuationLocalStorage = continuationLocalStorage; cls.continuationLocalStorage = continuationLocalStorage;

@ -248,7 +248,7 @@ Sockets.getOnlineAnonCount = function () {
return room ? room.length : 0; return room ? room.length : 0;
}; };
Sockets.reqFromSocket = function(socket) { Sockets.reqFromSocket = function(socket, payload, event) {
var headers = socket.request.headers; var headers = socket.request.headers;
var host = headers.host; var host = headers.host;
var referer = headers.referer || ''; var referer = headers.referer || '';
@ -256,11 +256,14 @@ Sockets.reqFromSocket = function(socket) {
return { return {
ip: headers['x-forwarded-for'] || socket.ip, ip: headers['x-forwarded-for'] || socket.ip,
host: host, host: host,
uid: socket.uid,
protocol: socket.request.connection.encrypted ? 'https' : 'http', protocol: socket.request.connection.encrypted ? 'https' : 'http',
secure: !!socket.request.connection.encrypted, secure: !!socket.request.connection.encrypted,
url: referer, url: referer,
body: {event: event || ((payload || {}).data || [])[0], payload: payload},
path: referer.substr(referer.indexOf(host) + host.length), path: referer.substr(referer.indexOf(host) + host.length),
headers: headers headers: headers,
_socket: socket
}; };
}; };

Loading…
Cancel
Save