2014-10-08 4 views
0

그래, 프론트 엔드에 정보를 보내는 소켓 io 연결이 있었고 클라이언트도 응답 할 수있어 반환 된 데이터를 저장했다.Express Route & Socket io

'/user/home' 경로에서 유일한 사용이 발생하면 server.js 파일에서 소켓 io가 시작되도록하는 것이 바람직하지 않습니다.

그래서 내 질문은 http 서버가 server.js에서 http 서버의 새 인스턴스를 호출하지 않고 시작된 경우 경로에서 소켓 io를 어떻게 사용합니까?

내가 물건 IO 소켓을 처리하는 io.js 라이브러리가 :

var io = require('socket.io')(); 
var redis = require("redis"); 
var client = redis.createClient(); 
io.path('/socket'); 
client.on('connect', function() { 
    console.log("Redis successfully connected"); 
}); 
io.on('connection', function (socket) { 
    console.log('a user connected: '+ socket.handshake.query.uid_bsp); 
    console.log('socket id: '+socket.id); 
    //clients.uid_bsp=socket.id; 
    //console.log('a user added: '); 
    client.set(socket.handshake.query.uid_bsp,socket.id); 
}); 

io.notifyTransfer = function (uid_bsp,data){ 
    client.get(uid_bsp,function(err,socketid){ 
      console.log('notifying: '+socketid); 
      io.to(socketid).emit('update', data); 
    }); 
}; 



module.exports = io; 

을 그리고이 라이브러리가 요구 한 server.js에, 그리고에 부착

답변

0

이것은 내가 그것을 구성이 어떻게 서버 :

는 (나머지, 전면, ...와 같은 별도의 js 파일입니다) 내 경로에 따라서
var httpserver = http.createServer(app); 
var io = require('./src/utils/io.js'); 
... 
var server = httpserver.listen(app.get('port'), function(){ 
     console.log('Express server listening on port ' + app.get('port')); 
    }); 

io.attach(server); 

, 난 그냥 IO 라이브러리를 필요로 notifyTransfer 방법을 사용할 수 있습니다.

희망이 도움이되었습니다.

관련 문제