gpt4 book ai didi

pubnub - Pusher/PubNub 1000 多个私有(private) channel

转载 作者:行者123 更新时间:2023-12-01 14:38:47 25 4
gpt4 key购买 nike

我有一个特定的用例,我需要将用户的账户余额发送到他们的浏览器和/或移动设备。这些余额当然是私有(private)的,但当余额发生变化时,我需要将余额更新发送给每个连接的用户,但是,我担心会同时推送到 1000 个私有(private) channel 。

对于这种用例,Pusher 和 PubNub 之间是否有任何限制?

编辑:我特别在看 https://pusher.com/docs/server_api_guide/interact_rest_api#example-publish-an-event-on-multiple-channels/lang=cs并一次发布到多个 channel 。我能否一次性发布到 100,000 个私有(private) channel ?

最佳答案

PubNub 发布限制和实时账户余额通知的安全性

每个 channel 每秒的发布次数没有硬性限制。 PubNub 保留更改此限制的权利。联系 support@pubnub.com 确认您的限制。

安全地发布实时账户余额

因此您需要安全地将实时帐户余额信息发送给许多人。当您想要传输一个人的实时账户余额时,您将需要一份安全注意事项 list 。由于您是从受信任的代码执行环境传输实时帐户余额,因此您不需要实现 PKI (公钥基础设施) 安全性。但是,您确实需要 session token 安全授权、用户身份验证和双层加密。

  1. session token 安全:PubNub Access Manager将提供允许基于 session 的用户级访问管理的机制。

  2. 用户身份验证:您需要通过电子邮件/密码对用户进行身份验证。身份验证成功后,您将使用 grant() API 颁发 Session Token 以用于 PubNub Access Manager。您还将生成将在第 3 项中使用的安全字符串(随机长不可预测 key )。

  3. 双层加密:除了TLS,您还将使用 PubNub AES256 消息加密。您将在 SDK 初始化时提供一个 cipher_key。在上面的 2 项中,除了 token session key 之外,您还需要生成并发送密码 key 给用户。 Cipher Key 和 Auth Key( token session key )都应该是长的、随机的和不可预测的。

session token key (Auth key )密码 key 的良好示例:

cHRiSEZPVkdnd1RqTktNVnB0YkdWS1UxSlRVbXNVMUpyV201U05XUlhSak

Note: The uuid (the user's id) should be treated the same as a cipher key and session token in regards to long and unpredictable.

接收实时更新的用户初始化示例

现在您可以使用以下 JavaScript 示例安全连接到 PubNub。

<!-- User Initialization Example -->
<script src="https://cdn.pubnub.com/pubnub-3.7.17.min.js"></script>
<script>(function(){

// Init User Connection
var pubnub = PUBNUB({
, subscribe_key : 'sub-c-your-subscribe-key-here'
, auth_key : 'user-session-token-here'
, cipher_key : 'user-cipher-key-here'
, uuid : 'user-id-here'
, ssl : true
});

// Subscribe to a Private User Channel
pubnub.subscribe({
channel : 'user-private-channel-here'
, message : function(message) { console.log(message) }
});

})()</script>

发送实时更新的服务器初始化示例

现在,对于可信执行环境中的服务器代码,您可以向最终用户客户端发布消息。

// Server Initialization Example
var pubnub = PUBNUB({
publish_key : 'pub-c-your-publish-key-here'
, subscribe_key : 'sub-c-your-subscribe-key-here'
, secret_key : 'sec-c-your-secret-key-here'
, auth_key : 'server-admin-session-token-here'
, cipher_key : 'destination-user-cipher-key-here'
, uuid : 'server-id-here'
, ssl : true
});

// Send Realtime Balance when User's Balance Changes
pubnub.publish({
channel : 'destination-user-private-channel-here'
, message : { "balance" : 10.00 }
});

Note: You must pre-grant access to the user's auth_key before they can subscribe to their user channel on the client device. The server must grant using the grant API.

// Send Realtime Balance when User's Balance Changes
pubnub.grant({
channel : 'destination-user-private-channel-here'
, auth_key : 'user-session-token-here'
, ttl : 1440 // minutes of session time to live
, read : true // user can read-only
, write : false // user can't write
});

遵循上述准则将使您能够提供现代安全性以向最终用户传送敏感信息。请注意,我们没有涵盖 PKI Public Key Infrastructure从不受信任的代码执行环境发布时,您将需要它。然而,根据您的需要,您将不需要 PKI,因为您是从服务器的可信代码发布的。

关于pubnub - Pusher/PubNub 1000 多个私有(private) channel ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33845454/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com