Ich muss den Socket vom Server von irgendwo auf Server-Code, Router/Controller ausgeben. Ich habe überprüft und einige der Threads und Google aber nichts funktioniert wie erwartet.Socket.IO + Express-Framework | Emit/Fire Von Express Controller & Router
app.js
var app = require('express').createServer();
var io = require('socket.io')(app);
require(./router.js)(app)
require(./socket.js)(io)
app.listen(80);
router.js
module.exports = function (app) {
app.use('/test', require(./controller.js));
return app;
};
socket.js
io.on('connection', function (socket) {
socket.emit('news', { hello: 'world' });
socket.on('my other event', function (data) {
console.log(data);
});
});
controller.js
var express = require('express');
var router = express.Router();
router.get('/about', function(req, res) {
// I need to emit here
});
module.exports = router;
Dies ist kein Extrakt Code ich verwende. Dies ist eine Struktur, wie ich benutze und wo ich anrufen muss.
Es sieht nicht wie Ihr Router s aktive Verbindung mit der Server-Instanz alle an. – jfriend00
Dies ist eine Beispielstruktur meines Codes.Mein Router verbindet sich. Gibt es eine Möglichkeit, vom Controller zu emittieren. Ich werde meinen Code überarbeiten –
Wenn Sie nur 'io.emit()' von anderen Modulen machen wollen, dann übergeben Sie einfach 'io' an sie in ihrem Konstruktor. Oder machen Sie eine Methode auf einem anderen Modul, das Sie die 'io' Variable durch' require() 'das Modul abrufen können und dann eine Methode aufrufen, um' io' zu holen. – jfriend00