Ich versuche, eine wirklich einfache Knoten-API mit express.js 4 zu erstellen, aber ich brauche ein paar "Echtzeit" Ereignisse, für die ich socket.io hinzugefügt. Ich bin zu beiden ziemlich neu, also verpasse ich wahrscheinlich etwas Grundlegendes, aber ich kann nicht gute Dokumente/Tuts auf diesem finden.express.js 4 und Sockets mit Express-Router
In der Express-App (erstellt mit dem Express-Generator) habe ich so etwas basierend auf einfachen Beispielen und Projektdokumenten, die ich gelesen habe. Dies funktioniert OK und von Client-Anwendungen, kann ich senden/empfangen die Socket-Ereignisse:
var express = require('express');
var path = require('path');
var logger = require('morgan');
var api = require('./routes/api');
var app = express();
var io = require('socket.io').listen(app.listen(3000));
app.use(logger('dev'));
app.use(express.static(path.join(__dirname, 'public')));
app.use('/api', api);
io.sockets.on('connection', function (socket) {
console.log('client connect');
socket.on('echo', function (data) {
io.sockets.emit('message', data);
});
});
// error handlers omitted
module.exports = app;
aber ich möchte die Steckdosen von meiner API Routen benutzen (in der ./routes/api.js-Datei, die ich benötigen ' über). Zum Beispiel könnte jemand die API verwenden, um eine Ressource PUT/POST zu verwenden, und ich möchte diese Übertragung an verbundene socket.io-Clients senden.
Ich kann nicht sehen, wie man die Variable 'io' verwendet oder den Code, der derzeit in der io.sockets.on('connection' ...
Funktion innerhalb Express-Routen ist, organisiert. Hier ist die ./routes/api.js
Datei:
var express = require('express');
var router = express.Router();
var io = ???;
router.put('/foo', function(req, res) {
/*
do stuff to update the foo resource
...
*/
// now broadcast the updated foo..
io.sockets.emit('update', foo); // how?
});
module.exports = router;
Dank Caner. Das funktioniert und mit ein paar kleineren Verbesserungen könnte ich das verwenden, da diese bestimmte App ziemlich einfach ist. Aber wenn ich versuche, es zu verwenden, um einige Best Practices zu lernen, gibt es eine Möglichkeit, den Express-Router() weiter zu verwenden? Das scheint der idiomatische Weg zu sein, Express 4.x zu verwenden. – darrend
@darrend, laut express.js Dokumente sieht es so aus, dass es in Ordnung ist, das zu benutzen http://expressjs.com/api.html, was denkst du? – cdagli
Es ist vernünftig - ich werde als akzeptiert markieren und in die Dokumente eintauchen und noch mehr programmieren. Danke für die Hilfe. – darrend