这就是我在 PHP中所做的:
$pubnub = new Pubnub(array(
'subscribe_key' => '<SUBSCRIBE_KEY>',
'publish_key' => '<PUBLISH_KEY>',
'secret_key' => '<SECRET_KEY>',
'uuid' => $uuid,
));
$grants = $pubnub->grant(true, true, $channel, $auth_key, 0);
这样可行.我的auth密钥和正确的访问获得200响应.
然后我在JS中这样做:
var pubnub = PUBNUB.init({
auth_key: settings.auth_key,
subscribe_key: settings.subscribe_key,
publish_key: settings.publish_key,
uuid: settings.uuid,
});
pubnub.subscribe({
channel: settings.channel,
// auth_key: settings.auth_key,
// uuid: settings.uuid,
presence: function(m) {
console.log('presence', m);
},
message: function(m) {
console.log('message', m);
}
});
并且每秒产生大约10 403个错误.我已经尝试过包含和排除一些配置变量,比如uuid和auth_key,但我得到的却是非常多的403.
如果我包含origin:’pubsub.pubnub.com’,则存在事件被触发一次或两次,但仍然是一堆403.如果我不包含任何来源,只有403,没有事件.
在JS中执行here_now()工作正常,但uuids为空,占用率为0:
setInterval(function() {
pubnub.here_now({channel: settings.channel}, function(rsp) {
console.log('here_now', rsp);
});
}, 2000);
>在PubNub管理控制台中禁用Acccess Manager“修复”它,但显然我需要访问管理
>我认为我完全按照https://www.pubnub.com/docs/web-javascript/pam-security,但没有任何作用.
> https://www.pubnub.com/developers/tutorials/access-manager/甚至没有提到.subscribe(),所以不知道应该做什么.
>要求订阅的JS URL(10x / sec)是http://ps9.pubnub.com/subscribe/\u0026lt;SUBSCRIBE_KEY\u0026gt;/\u0026lt;CHANNEL\u0026gt;,\u0026lt;CHANNEL\u0026gt;-pnpres/0/0?uuid=\u0026lt; UUID>&安培; AUTH = LT; AUTH_KEY>&安培; pnsdk = PubNub-JS的Web / 3.7.16
为什么PHP授权可以工作,而不是JS订阅?
最佳答案 PubNub Presence和Access Manager
任何时候您在PubNub中使用Presence和Access Manager(包括所有帐户免费),当您向频道授予权限时,如果客户端要监视在线状态,您还需要授予对这些频道的-pnpres对应的访问权限(实现在线状态)回调或启用频道上的状态 – 取决于SDK如何处理它.
$grants = $pubnub->grant(true, true, 'sports,sports-pnpres', $auth_key, 0);
此代码示例显示了如何在一次调用中授予多个通道.