mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-11-07 22:45:46 +01:00
unify request as a store key for both http and websockets calls
This commit is contained in:
@@ -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
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user