Node.js/Express'te oldukça yeniyim ve bunu bir AngularJS uygulaması için arka uç olarak kullanıyorum. Sorunumda yardım için StackOverflow'un her yerine baktım, ancak önerileri koduma nasıl yönlendireceğimi anlayamıyorum. aşağıdaki gibiSocket.io, Express denetleyicilerinden yayar
başvurum çalışır:
- Uzun çalışan Scala işlemi periyodik benim node.js uygulama günlük iletilerini. Bu mesaj alındığında, başvurum
- kayıt mesajları daha sonra Açısal müşteriye gerçek zamanlı olarak gönderilir MongoDB için günlük mesaj yazar bir HTTP API
- gönderme yapar.
Express denetleyicisinde soket örneğine nasıl başvuracağımı anlayamadığım için, Node modüllerinde bir sorun yaşıyorum.
Gördüğünüz gibi, server.js'de socket.io orada başlatılmıştır. Bununla birlikte, socket.io örneğini kullanarak yayınlayabilmek için denetleyicinin kendisinin, logs.js olmasını isterim.
nasıl denetleyicisi io başvurabilirsiniz? Io örneğini denetleyiciye nasıl ileteceğimi bilemiyorum, böylece ileti gönderebiliyorum? İşte
Düğüm kodunun bir kısmı:
server.js
var app = express(),
server = require('http').createServer(app),
io = require('socket.io').listen(server);
require('./lib/config/express')(app);
require('./lib/routes')(app);
server.listen(config.port, config.ip, function() {
console.log('Express server listening on %s:%d, in %s mode', config.ip, config.port, app.get('env'));
});
io.set('log level', 1); // reduce logging
io.sockets.on('connection', function(socket) {
console.log('socket connected');
socket.emit('message', {
message: 'You are connected to the backend through the socket!'
});
});
exports = module.exports = app;
routes.js
var logs = require('./controllers/logs'),
middleware = require('./middleware');
module.exports = function(app) {
app.route('/logs')
.post(logs.create);
}
logs.js
exports.create = function(req, res) {
// write body of api request to mongodb (this is fine)
// emit log message to angular with socket.io (how do i refer to the io instance in server.js)
};
Teşekkürler, sen benim kahramanımsın! – mousetree
Yukarıda gösterildiği gibi rotada kullanmak için route.js içinde soketi nasıl tanımlarsınız? –
@CoreyQuillen: İşte bir rotaları.js örneği - https://gist.github.com/mousetree/7585c9d108cfc006a582 – mousetree