2016-06-29 16 views
3

私は安らかなAPIからsocket.ioイベントを送出しようとしています。ノードの残りのapiからsocket.ioを呼び出す

私の現在の設定は、このようなものになります。

var app = express(); 
... 
var routesApi = require('./app_api/routes/index'); 
app.use('/api', routesApi); 
module.exports = app; 

server.js サーバーを作成し、両方のフックアップ: は急行アプリをセットアップなど、必要なすべてのルートが作成されます

app.jsをアプリケーションとソケットを表現する

var http = require('http'); 
var server = http.createServer(app); 

require('../app_server/controllers/socket.js').socketServer(server); 

すべてが機能し、クライアントからソケットイベントを正常に起動できますsocket.js内で処理し、結果を出力します。

しかし、私がやろうとしているのは、私の安らかなAPIからsocket.jsメソッドを呼び出すことです。それをどのようにフックするのか分かりません。

ソケットサーバーがserver.js内で初期化され、apiルーティングがapp.jsに接続されているため、お互いに話をする正しい方法がわかりません。

は、あなたが(あなたがappを持っているか、どこ)急行セクション内Socket.ioを初期化する必要があるので、あなたが明示要求内でそれを保存して、必要なすべてのルートでそれを使用することができますあなたの

答えて

3

ありがとうございます。

は、だからあなたのapp.jsにあなたはソケットを作成し、その後、あなたはアプリに保存します。

var socketIo = require('../app_server/controllers/socket.js').socketServer(server); // Make sure this returns the socketio 

app.set('socketIo', socketIo); 

は今、あなたがこれを行うことができ、すべてのルートに:

app.route('/test').get(function (req, res) { 
    var socket = req.app.get('socketIo'); 
    socket.emit('hello', 'world'); 
    res.end(); 
} 
+0

私はあなたが言っているかを見ると、それは理にかなっていますが、私のapp.jsにどのようにサーバーを置くのでしょうか? サーバはserver.js内に定義されています var server = http.createServer(app); これは既にアプリをインストールしておかなければなりません – zsayn

+0

ありがとう、これは私が必要としていたものです。私のREST APIハンドラーでは、2つのソケット行を追加できるようになり、着信REST呼び出しが行われたときにすべてのsocket.ioクライアントに通知されます。 –

関連する問題