Tôi vừa trả lời một bài đăng SO khác (Mean.io framwork with socket.io).
Lưu ý: Tôi đang sử dụng mean.io v0.5.26 và socket.io v1.1.0.
Dán lại câu trả lời của tôi, tại đây.
Tôi cũng phải đối mặt với cùng một vấn đề và đã cho tôi khoảng một tuần để cuối cùng có được nó đúng.Tôi sẽ cố gắng để giải thích những gì tôi đã làm:
app.js
Trong tập tin này, tôi chỉ gọi mã tạo và thiết lập một đối tượng socket.io đối với tôi, sau đó được truyền cho mô-đun tuyến đường.
'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;
});
máy chủ/config/socketio.js
Tập tin này chỉ đơn giản là cấu hình các đối tượng socket.io. Xin lưu ý rằng tôi đã phải nâng cấp mô-đun meanio lên phiên bản 0.5.26 cho tác phẩm này, vì đối tượng http (máy chủ tốc hành) không có sẵn trong các phiên bản cũ hơn. Hơn nữa, trong trường hợp bạn muốn sử dụng ssl, bạn có thể tiêm https thay vì 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;
};
tuyến/chat.js
Cuối cùng, sử dụng tệp tuyến để xác định các sự kiện ổ cắm vv
'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) {
});
});
};
Hope this helps!
Có bản cập nhật nào cho điều này hay bạn vẫn đảm bảo rằng nó hoàn toàn hoạt động? Cảm ơn, bằng cách này! –
Tôi cũng quan tâm để xem nếu có công việc xung quanh. –
Tiến trình: http://www.reddit.com/r/node/comments/29pr64/how_to_combine_meanio_and_socketio/ ... –