mirror of
				https://github.com/NodeBB/NodeBB.git
				synced 2025-10-26 16:46:12 +01:00 
			
		
		
		
	| @@ -103,10 +103,10 @@ redisModule.info = async function (cxn) { | |||||||
| 	return redisData; | 	return redisData; | ||||||
| }; | }; | ||||||
|  |  | ||||||
| redisModule.socketAdapter = function () { | redisModule.socketAdapter = async function () { | ||||||
| 	const redisAdapter = require('socket.io-redis'); | 	const redisAdapter = require('socket.io-redis'); | ||||||
| 	const pub = connection.connect(nconf.get('redis')); | 	const pub = await connection.connect(nconf.get('redis')); | ||||||
| 	const sub = connection.connect(nconf.get('redis')); | 	const sub = await connection.connect(nconf.get('redis')); | ||||||
| 	return redisAdapter({ | 	return redisAdapter({ | ||||||
| 		key: 'db:' + nconf.get('redis:database') + ':adapter_key', | 		key: 'db:' + nconf.get('redis:database') + ':adapter_key', | ||||||
| 		pubClient: pub, | 		pubClient: pub, | ||||||
|   | |||||||
| @@ -1,31 +1,35 @@ | |||||||
| 'use strict'; | 'use strict'; | ||||||
|  |  | ||||||
| var nconf = require('nconf'); | const nconf = require('nconf'); | ||||||
| var util = require('util'); | const util = require('util'); | ||||||
| var winston = require('winston'); | const winston = require('winston'); | ||||||
| var EventEmitter = require('events').EventEmitter; | const EventEmitter = require('events').EventEmitter; | ||||||
| const connection = require('./connection'); | const connection = require('./connection'); | ||||||
|  |  | ||||||
| var channelName; | let channelName; | ||||||
| var PubSub = function () { | const PubSub = function () { | ||||||
| 	var self = this; | 	const self = this; | ||||||
| 	var subClient = connection.connect(); |  | ||||||
| 	this.pubClient = connection.connect(); |  | ||||||
|  |  | ||||||
| 	channelName = 'db:' + nconf.get('redis:database') + ':pubsub_channel'; | 	channelName = 'db:' + nconf.get('redis:database') + ':pubsub_channel'; | ||||||
| 	subClient.subscribe(channelName); |  | ||||||
|  |  | ||||||
| 	subClient.on('message', function (channel, message) { | 	connection.connect().then(function (client) { | ||||||
| 		if (channel !== channelName) { | 		self.subClient = client; | ||||||
| 			return; | 		self.subClient.subscribe(channelName); | ||||||
| 		} | 		self.subClient.on('message', function (channel, message) { | ||||||
|  | 			if (channel !== channelName) { | ||||||
|  | 				return; | ||||||
|  | 			} | ||||||
|  |  | ||||||
| 		try { | 			try { | ||||||
| 			var msg = JSON.parse(message); | 				var msg = JSON.parse(message); | ||||||
| 			self.emit(msg.event, msg.data); | 				self.emit(msg.event, msg.data); | ||||||
| 		} catch (err) { | 			} catch (err) { | ||||||
| 			winston.error(err.stack); | 				winston.error(err.stack); | ||||||
| 		} | 			} | ||||||
|  | 		}); | ||||||
|  | 	}); | ||||||
|  |  | ||||||
|  | 	connection.connect().then(function (client) { | ||||||
|  | 		self.pubClient = client; | ||||||
| 	}); | 	}); | ||||||
| }; | }; | ||||||
|  |  | ||||||
|   | |||||||
| @@ -16,7 +16,7 @@ const Namespaces = {}; | |||||||
|  |  | ||||||
| const Sockets = module.exports; | const Sockets = module.exports; | ||||||
|  |  | ||||||
| Sockets.init = function (server) { | Sockets.init = async function (server) { | ||||||
| 	requireModules(); | 	requireModules(); | ||||||
|  |  | ||||||
| 	const SocketIO = require('socket.io').Server; | 	const SocketIO = require('socket.io').Server; | ||||||
| @@ -30,7 +30,8 @@ Sockets.init = function (server) { | |||||||
| 		// 	io.adapter(require('./single-host-cluster')); | 		// 	io.adapter(require('./single-host-cluster')); | ||||||
| 		// } else if (nconf.get('redis')) { | 		// } else if (nconf.get('redis')) { | ||||||
| 		if (nconf.get('redis')) { | 		if (nconf.get('redis')) { | ||||||
| 			io.adapter(require('../database/redis').socketAdapter()); | 			const adapter = await require('../database/redis').socketAdapter(); | ||||||
|  | 			io.adapter(adapter); | ||||||
| 		} else { | 		} else { | ||||||
| 			winston.warn('clustering detected, you should setup redis!'); | 			winston.warn('clustering detected, you should setup redis!'); | ||||||
| 		} | 		} | ||||||
|   | |||||||
| @@ -31,7 +31,8 @@ start.start = async function () { | |||||||
| 		await db.initSessionStore(); | 		await db.initSessionStore(); | ||||||
|  |  | ||||||
| 		const webserver = require('./webserver'); | 		const webserver = require('./webserver'); | ||||||
| 		require('./socket.io').init(webserver.server); | 		const sockets = require('./socket.io'); | ||||||
|  | 		await sockets.init(webserver.server); | ||||||
|  |  | ||||||
| 		if (nconf.get('runJobs')) { | 		if (nconf.get('runJobs')) { | ||||||
| 			require('./notifications').startJobs(); | 			require('./notifications').startJobs(); | ||||||
|   | |||||||
| @@ -152,7 +152,7 @@ before(async function () { | |||||||
|  |  | ||||||
| 	const webserver = require('../../src/webserver'); | 	const webserver = require('../../src/webserver'); | ||||||
| 	const sockets = require('../../src/socket.io'); | 	const sockets = require('../../src/socket.io'); | ||||||
| 	sockets.init(webserver.server); | 	await sockets.init(webserver.server); | ||||||
|  |  | ||||||
| 	require('../../src/notifications').startJobs(); | 	require('../../src/notifications').startJobs(); | ||||||
| 	require('../../src/user').startJobs(); | 	require('../../src/user').startJobs(); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user