在私人频道上发送Pusher活动

时间:2017-07-05 22:52:40

标签: javascript ruby-on-rails ruby pusher

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

(docs: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>

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

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,如调试控制台上所示:

Pusher Debug console

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

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

此代码是相关的还是我对所谓的Private Channels的理解是错误的?

1 个答案:

答案 0 :(得分:3)

您似乎已按照here所述将您的订阅者排除在广播之外。

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

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