【问题标题】:Juggernaut / Socket.io and authenticating single-user channel subscriptionJuggernaut / Socket.io 和认证单用户频道订阅
【发布时间】:2011-09-14 06:42:32
【问题描述】:

我是 Node JS 和 Socket IO 的新手,但我听说过很多关于它们的好消息,所以我想看看它们是否可以用作实时通知系统。

在我的场景中,用户将打开一个套接字来监听发布给用户的通知——每个用户都将打开一个到他们自己的通知的连接,而不是一个“公共”频道。

var jug = new Juggernaut;
var channel = "/user/" + userId + "/notifications";
jug.subscribe(channel, function(data){
    console.log("Got data: " + data);
});

因此,在几乎所有情况下,都会有 1 个用户订阅 1 个频道。

我有两个问题:

  1. 我见过的所有 Juggernaut 示例都涉及多个客户端订阅 1 个频道 - 这让我觉得它不是为 1-1 通信而设计的。
  2. 有没有一种方法可以添加身份验证,以便只有指定的用户才能收到消息(IE,当前登录的用户是唯一可以订阅他/她的通知频道的用户)。如果有一种方法可以在订阅时传递额外数据,那可能就足够了(散列用户 ID 并将其用作令牌?)。

有没有人有任何使用剑圣的经验,之前可能遇到过这种情况?

【问题讨论】:

    标签: node.js socket.io publish-subscribe juggernaut


    【解决方案1】:

    我见过的所有 Juggernaut 示例都涉及多个客户端订阅 1 个频道

    发布者的多个订阅者和一个订阅者有什么区别?

    有没有办法添加身份验证,以便只有指定的用户才能收到消息

    当然。要求通道进行身份验证,并且由于它将通过用户 ID 进行,因此您已经知道保护它所需的内容。

    至于如何让 juggernaut 进行身份验证,看起来您可以发布主机标头来为您处理。

    【讨论】:

    • 可能有许多频道“打开”。我不确定 socket.io 或 Juggernaut 是如何实现它们的,所以我担心这可能是性能问题。
    • 您打开的每个套接字都会导致整体性能下降。这是问题所固有的。你打算在一台服务器上打开超过 1000 个套接字吗?这成为一个主题,您需要一个为您的需求而设计的系统,而不仅仅是“我可以在 linux 机器上扔什么并开始工作”
    猜你喜欢
    • 2013-05-01
    • 2011-06-06
    • 2018-05-31
    • 1970-01-01
    • 2014-09-19
    • 2013-03-16
    • 2014-12-14
    • 1970-01-01
    • 2022-01-03
    相关资源
    最近更新 更多