我正在对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,如调试控制台上所示:
但是前端没有收到事件,使用socket_id
时,绑定函数永远不会运行,而Pusher将这些事件视为API Messages
有人知道我做错了什么吗?
此代码是相关的还是我对所谓的Private Channels
的理解是错误的?
答案 0 :(得分:3)
您似乎已按照here所述将您的订阅者排除在广播之外。
尝试从触发器调用中删除第四个参数:
Pusher.trigger('private-channel_test', 'greet', {greet: 'hello world'})