javascript – 授予成功后无法订阅频道

这就是我在 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);

此代码示例显示了如何在一次调用中授予多个通道.

点赞