私はExpressJSとSocket.IOを頭に入れようとしています。私が試してみて、私はsocket.ioへの参照を持っていない私のルートの1つからイベントを発するしかしRoute Separationを使用したExpressJS - Socket.IO
var express = require('express')
, db = require('./db')
, mongoose = require('mongoose')
, models = require('./models/device')
, http = require('http')
, path = require('path')
, app = express()
, server = http.createServer(app)
, io = require('socket.io').listen(server)
, routes = require('./routes/myRoutes');
:私は私のapp.jsから含まれ、別のファイルに私のルートを持っています。
exports.update = function(req, res){
return Item.findById(req.params.id, function(err, item) {
// Do some checks and save.
socket.emit('updated');
}
}
私はこれが利用できない理由を理解しています。むしろ、socket.ioのハンドルを取得する最も良い方法は、app.js以外の別のファイルからのものであるかどうかはわかりません。私はthis question(リカルドの答えを参照)を見ていましたが、私はまだ明確ではありません。理想的には、これを避けたいと思います:
routes = requires( "routes/myRoutes")(io);
httpモジュールの使用を避けることができますが、socket.ioには、express依存関係(3.xx)から呼び出せるhttpサーバが必要です。var app = express()、server = app.listen(3000)、io = socket.listen(サーバー); –
更新:feathers.jsを見て – backdesk