2017-12-12 6 views
0

Node.js에서 soket.io를 사용하고 있는데 제대로 작동하지만 경로 파일에 문제가 있습니다.socket.io가 express route 내에서 제대로 작동하지 않습니다.

다음은 제 코드와 흐름입니다. 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 파일의 코드는 경로의 발광 때로는 작동하고 때로는 작동하지 않습니다 위의

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', 함수 (데이터) { console.log (data); }}의 각 측면에서 응답을받지 못했습니다. – Jignasa

+0

라우터가 호출되고 있습니까? – chirag

답변

1

io.sockets.emitio.emit으로 대체하면됩니다.

여기서 io.sockets.emit은 연결된 클라이언트로만 내보내고 소켓 팩토리는 API를 누르기 전까지는 작동하지 않을 수 있습니다.

+0

나는 io.emit하지만 동일한 문제를 시도합니다. 어떤 때는 제대로 방출되고 어떤 때는 방출되지 않습니다. – Jignasa