2016-07-02 3 views
0

node.js를 사용하여 socket.io를 완벽하게 작동시킬 수 있지만 모든 요청 내에서 socket.io에 연결할 때 변수 (user_id)를 전달할 수 없습니다.node.js를 사용하여 socket.io에 연결하십시오.

var express = require('express'); 
var router = express.Router(); 

    var server = require("http").Server(express); 
    var io = require("socket.io")(server); 
    server.listen(3001); 
    io.on('connection', function(client) { 
     client.on('order_'+userId, function(data) { // how to get user_id here? I can't put this within any endpoint 
      io.emit('order_'+user_id,data); 
     }); 
    }); 

    router.get('/', function(req, res) { 
     //I can get my userId here, I'm using passport session 

     console.log(res.user.id) 
    }) 

socket.io 및 node.js에 경험이있는 사람의 도움이 필요합니다.

+0

소켓을 사용하거나 그렇지 않으면 user_id를 보내고 받으시겠습니까? 귀하의 질문은 분명하지 않습니다. – damitj07

+0

@ damitj07 아니, 나는 user_id를 사용하여 끝점을 고유하게 만듭니다. –

+0

@ damitj07 나는 3 명의 클라이언트를 가지고있는 것처럼 내 order_123, order_345, order_something_else를 청취 할 것입니다. –

답변

1

난 당신이 더 나은 (매개 변수가 정말로 확보하지 않는 한, 당신은 JWT가 좋은 선택이 될 것입니다 당신이 확인할 수 있습니다 토큰의 어떤 종류를 보내야 사용자 ID를 전송) 몇 가지 인증 방법을 사용할 생각합니다.

있는 방법이, 당신은 항상 주문 이벤트를 보내고, 이벤트에 전달 된 데이터에서 사용자 ID 매개 변수를 전달할 수 있습니다

서버 :

client.on('order', function(data) { 
     io.emit('order_' + data.user_id); 
    }); 

클라이언트 :

socket.emit('order', {user_id:1}); 
관련 문제