Ich habe gerade auf einen anderen SO Post geantwortet (Mean.io framwork with socket.io).
Hinweis: Ich verwende mean.io v0.5.26 und socket.io v1.1.0.
Meine Antwort hier wieder einfügen.
Ich hatte auch das gleiche Problem und nahm mich etwa eine Woche, um es endlich richtig zu machen.Ich werde versuchen zu erklären, was ich getan habe:
In dieser Datei app.js rufe ich nur den Code, dann übergeben wird, für mich ein socket.io Objekt einrichtet erzeugt und die das Routenmodul.
'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
Diese Datei einfach konfiguriert das socket.io Objekt. Bitte beachten Sie, dass ich für diese Arbeit das mainio Modul auf Version 0.5.26 upgraden musste, da http Objekt (Express Server) in älteren meanio Versionen nicht verfügbar ist. Wenn Sie ssl verwenden möchten, können Sie außerdem https anstelle von http injizieren.
'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;
};
Routen/chat.js
Schließlich verwenden die Routen-Datei die Socket-Ereignisse definieren usw.
'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) {
});
});
};
hoffe, das hilft!
Gibt es ein Update dafür, oder stellen Sie immer noch sicher, dass es vollständig funktioniert? Danke übrigens! –
Ich bin auch interessiert zu sehen, ob es Arbeit gibt. –
Fortschritt: http://www.reddit.com/r/node/comments/29pr64/how_to_combine_meanio_and_socketio/ ... –