我有一个使用MEAN堆栈编写的应用程序。我在应用中有不同的模块,用户'用户'消息''部分'等...
客户端不应向服务器发送任何通知,只有服务器向房间中的客户端发送消息。
如何配置要在不同模块中使用的socket.io:
如下所示:
users.js
exports.Users = function(io) {
...
UsersCollection.save(...) {
...
io.join('some room');
...
}
}
messages.js
exports.Messages = function(io) {
...
MessagesCollection.save(...) {
...
io.to('some room').emit('new_message', msg):
...
}
}
sections.js
exports.Sections = function(io) {
...
SectionsCollection.update(...) {
...
io.to('some room').emit('section_updated', msg):
...
}
}
server.js
var app = require('express')();
var server = require('http').Server(app);
var io = require('socket.io')(server);
var users = require('users')(io);
var messages = require('messages')(io);
var sections = require('sections')(io);
...
io.on('connection', function (socket) {
console.log('someone connected')
});
制作此类产品的最佳方式是什么?
感谢。
答案 0 :(得分:1)
我通过以下方式使用EventEmitter找到了解决方案:
server.js
var app = require('express')();
var server = require('http').Server(app);
var io = require('socket.io')(server);
**var events = require('events');
var serverEmitter = new events.EventEmitter();
var users = require('users')(serverEmitter);
var messages = require('messages')(serverEmitter);
var sections = require('sections')(serverEmitter);**
...
io.on('connection', function (socket) {
serverEmitter.on('new_message', function (data) {
socket.to('some room').emit('new_message', msg):
});
});
后来在apis中我使用了发射器:
serverEmitter.emit('new_message', msg);
感谢。