【问题标题】:Sending Pusher events on private channels在私人频道上发送 Pusher 事件
【发布时间】:2017-12-09 18:30:55
【问题描述】:

我正在对 Pusher 进行一些测试,并按照文档为私有频道创建了一种身份验证方法,并且身份验证按预期工作。

(文档:https://pusher.com/docs/authenticating_users#implementing_endpoints)

这是我使用 JSONP 订阅频道的脚本:

<script>
  Pusher.logToConsole = true;
  var pusher = new Pusher('<%= ENV['PUSHER_KEY'] %>', {
    cluster: 'us2',
    encrypted: true,
    authTransport: 'jsonp',
    authEndpoint: '/pusher_jsonp_auth',
  });

  var channel = pusher.subscribe("private-channel_test");
  channel.bind('pusher:subscription_succeeded', function() {
    console.log("PVT channel");
  });
  channel.bind('greet', function(data) {
    console.log(data);
  });
</script>

频道已正确订阅,OK! 我在浏览器控制台上收到的消息:

Pusher : State changed : connecting -> connected with new socket ID 163.232688
pusher.min.js:8 Pusher : Event sent : {"event":"pusher:subscribe","data":{"auth":"1e38f997c10796c55093:4e9e160585dc7c49da68da98e281860c1461ddf7c1b37688aa2fde581b482093","channel":"private-channel_test"}}
pusher.min.js:8 Pusher : Event recd : {"event":"pusher_internal:subscription_succeeded","data":{},"channel":"private-channel_test"}
home:35 PVT channel

在后端,我使用 socket_id 触发了该通道的事件: 使用 ruby​​ pusher gem,我发送了这样的消息:

Pusher.trigger('private-channel_test', 'greet', {greet: 'hello world'}, {socket_id: "163.232688"})

事件被发送到 Pusher,如 Debug Console 所示:

但是前端没有接收到事件,并且使用socket_id时绑定函数永远不会运行,并且Pusher将这些事件视为API Messages

有人知道我做错了什么吗?

这段代码是否相关或者我对所谓的Private Channels的理解是错误的?

【问题讨论】:

    标签: javascript ruby-on-rails ruby pusher


    【解决方案1】:

    如here 所述,您似乎将您的订阅者排除在广播之外。

    尝试从触发器调用中删除第四个参数:

    Pusher.trigger('private-channel_test', 'greet', {greet: 'hello world'})
    

    【讨论】:

    • leesio 如果我这样做,我将向订阅该频道的每个人广播一个事件。我想要的是直接向单个通道触发事件,并确保只有经过身份验证的用户才能接收到该事件。
    • @AndreDurao 在您的示例中,您将向所有订阅者广播您的事件除了您指定的套接字!由于您的频道是私人频道,因此只有经过身份验证的用户才能订阅。恐怕没有办法将事件广播到单个套接字。如果您想向单个客户端广播事件,一种方法是为每个客户端分配自己的私人频道。
    猜你喜欢
    • 2014-07-15
    • 2019-06-04
    • 2016-02-24
    • 2018-02-23
    • 2017-05-26
    • 2016-11-06
    • 1970-01-01
    • 2020-03-24
    • 2017-05-12
    相关资源
    最近更新 更多