Ho appena risposto a un altro post SO (Mean.io framwork with socket.io).
Nota: Sto utilizzando mean.io v0.5.26 e socket.io v1.1.0.
Incollare di nuovo la risposta, qui.
Ho anche affrontato lo stesso problema e mi ci sono voluti circa una settimana per riuscire finalmente a farlo bene.Cercherò di spiegare quello che ho fatto:
app.js
In questo file, ho appena invoco il codice che crea e imposta un oggetto socket.io per me, che viene poi passato a il modulo rotte.
'use strict';
/*
* Defining the Package
*/
var Module = require('meanio').Module;
var MeanSocket = new Module('chat');
/*
* All MEAN packages require registration
* Dependency injection is used to define required modules
*/
MeanSocket.register(function(app, http) {
var io = require('./server/config/socketio')(http);
//We enable routing. By default the Package Object is passed to the routes
MeanSocket.routes(io);
return MeanSocket;
});
server/config/socketio.js
Questo file configura semplicemente l'oggetto socket.io. Si prega di notare che ho dovuto aggiornare il modulo meanio alla versione 0.5.26 per questo lavoro, poiché l'oggetto http (express server) non è disponibile nelle versioni medio di meanio. Inoltre, nel caso in cui si desideri utilizzare ssl, è possibile iniettare https anziché http.
'use strict';
var config = require('meanio').loadConfig(),
cookie = require('cookie'),
cookieParser = require('cookie-parser'),
socketio = require('socket.io');
module.exports = function(http) {
var io = socketio.listen(http);
io.use(function(socket, next) {
var data = socket.request;
if (!data.headers.cookie) {
return next(new Error('No cookie transmitted.'));
}
var parsedCookie = cookie.parse(data.headers.cookie);
var sessionID = parsedCookie[config.sessionName];
var parsedSessionID = cookieParser.signedCookie(parsedCookie[config.sessionName], config.sessionSecret);
if (sessionID === parsedSessionID) {
return next(new Error('Cookie is invalid.'));
}
next();
});
return io;
};
percorsi/Chat.js
Infine, utilizzare il file percorsi per definire gli eventi di socket, ecc
'use strict';
// The Package is passed automatically as first parameter
module.exports = function(MeanSocket, io) {
io.on('connection', function(socket) {
console.log('Client Connected');
socket.on('authenticate', function(data, callback) {
});
});
};
Spero che questo aiuti!
C'è qualche aggiornamento per questo, o stai ancora facendo in modo che funzioni completamente? Grazie, a proposito! –
Sono anche interessato a vedere se c'è un problema. –
Avanzamento: http://www.reddit.com/r/node/comments/29pr64/how_to_combine_meanio_and_socketio/ ... –