【问题标题】:Connect socket.io using node.js [duplicate]使用node.js连接socket.io [重复]
【发布时间】:2016-07-03 01:46:37
【问题描述】:

我能够使用 node.js 使 socket.io 完美工作,但我无法传递变量 (user_id),因为我连接 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 经验的人帮助。

【问题讨论】:

  • 您想使用套接字或其他方式发送和接收 user_id 吗?你的问题不是很清楚。
  • @damitj07 不是,我使用 user_id 使端点唯一。
  • @damitj07 就像我有 3 个客户,他们会听我的 order_123、order_345、order_something_else..
  • 将此标记为您的其他问题的副本,该问题有从 socket.io 连接事件获取用户数据的答案。将来,您应该编辑先前的问题以澄清而不是编写新问题。您可以随时使用“编辑”链接来编辑您现有的任何问题。

标签: javascript node.js sockets socket.io


【解决方案1】:

我认为你最好使用一些身份验证方法(发送用户 id 作为参数并不真正安全,你应该发送某种可以验证的令牌,JWT 将是一个不错的选择)。

无论如何,你总是可以发送订单事件,并在随事件传递的数据中传递用户id参数:

服务器:

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

客户:

  socket.emit('order', {user_id:1});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-14
    • 2013-08-20
    • 2012-12-27
    • 2016-03-20
    • 2015-04-03
    • 1970-01-01
    • 2013-02-08
    • 1970-01-01
    相关资源
    最近更新 更多