2016-07-02 14 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

socketを使用してuser_idを送信したり受信したりしますか?あなたの質問は本当に明確ではありません。 – damitj07

+0

@ damitj07ではなく、user_idを使用してエンドポイントを一意にします。 –

+0

@ damitj07私は3つのクライアントを持っているように、彼らは私のorder_123、order_345、order_something_elseを聞きます.. –

答えて

1

私はあなたがより良い認証方法を使用すると思います(ユーザーIDを送ることは本当に安全ではありません。確認できるトークンを送るべきです、JWTが良い選択です)。

どのような方法、あなたは常に注文イベントを送信し、イベントに渡されたデータにユーザーIDパラメータを渡すことができます。

サーバー:

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

はクライアント:

socket.emit('order', {user_id:1}); 
関連する問題