Я ищу, чтобы отделить мои события Socket.io/init от моей логики сервера основного узла. Цель состоит в том, чтобы не только поддерживать код Socket.io, но и поддерживать любые события, которые я могу испустить.Инкапсулировать события Socket.io в узле?
Я немного завалены понимания масштабов этого и метод инкапсуляции с узлом и в надежде получить некоторые разъяснения на лучший способ делать вещи.
server.js
//-- Socket.io
var http = require('http').Server(app);
//-- Encapsulate Socket init/events
var io = require('./socket.js').listen(http)
var api = express.Router();
api.route('/users/:user_id')
.put(function(req, res) {
io.dispatch(req.body.event);
}
}
//-- Start Server
http.listen(port);
console.log('Server started on port: ' + port);
io.init(app);
socket.js
'use strict'
var io = require('socket.io');
var ioJwt = require('socketio-jwt');
var clientsConnected = 0;
var ioServer;
exports.listen = function(http, app) {
ioServer = io.listen(http);
return ioServer;
}
exports.init = function(app) {
ioServer.use(ioJwt.authorize({
secret: app.get('secret'),
handshake: true
}));
ioServer.on('connection', function(socket){
connect();
socket.on('error', function(err) {
console.log('Socket.IO error:');
console.log(err);
});
socket.on('disconnect', function(){
disconnect();
});
});
}
function connect() {
clientsConnected++;
console.log('user connected. ' + clientsConnected + ' total.');
}
function disconnect() {
clientsConnected--;
console.log('user disconnected. ' + clientsConnected + ' total.');
}
Что вы имеете в виду под "герметизировать" здесь? Какие конкретные цели вы пытаетесь достичь? – jfriend00
Переместите код, связанный с Socket.io, в отдельный файл. –