2017-12-12 23 views
0

Node.jsでsoket.ioを使用していますが問題なく動作していますが、ルートファイルに問題があります。socket.ioはエクスプレスルート内で正しく動作しません

以下は私のコードとフローです。 私はserver.jsファイルを持っています。私はioと定義しています。

var express = require('express'), 
    app = express(), 
    http = require('http').Server(app); 
var io = require('socket.io').listen(http); 


//io from server.js 
io.on('connection', function (socket) { 

    socket.emit('getDevicePostData', { message : 'Hi from server!!' }); 
    socket.on('sendDevicePostData', function("Hi from server") {}); 
}); 


// pass io to routes file 
var smart_control = require('./smart_control.js')(io); 
app.use('/', smart_control); 

そしてsmart_control.jsファイルコードは時々仕事と時々動作しないルートのEMIT上

module.exports = function(io) { 

    router.post('/emitdata', function(req, res, next) { 
     io.sockets.emit('getDevicePostData', { message : 'Hi from route!!' }); 
    }); 
return router; 
} 

を下回っています。

そして、これは角度jsから呼び出されます。私は、角度コントローラのコードの下の角 でhttps://www.npmjs.com/package/angular-socket-ioパッケージを使用します。

mySocket.on('getDevicePostData', function(data) { 

        console.log(data); 
       }); 

はここmySocket工場です。

私のコードで何が間違っていますか。ルートファイルからの主な問題。

+0

動作しないとどうなりますか?サーバーはPOSTに関連する何かを表示しますか?次のようにしてください:POST/emitdata [レスポンスコード] – chirag

+0

私はこのmySocket.on( 'getDevicePostData'、function(data){ console.log(data); })の角側で応答を得られませんでした。 – Jignasa

+0

あなたのルータは呼び出されていますか? – chirag

答えて

1

io.sockets.emitio.emitに置き換えてください。

ここでio.sockets.emitは接続されたクライアントにのみ送信され、APIを使用した時点ではソケットファクトリがアップしていない可能性があります。

+0

の終わりに私はio.emitを試みますが、同じ問題です。いくつかの時間は正しく放出され、ある時間は放出されない – Jignasa

関連する問題