【发布时间】: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