Pusher账户超过配额

时间:2015-08-07 10:04:41

标签: pusher

我们在应用程序中使用Puhser以进行实时更新。

有些事情发生了 - 虽然谷歌分析说我们有 200个同时连接,Pusher说我们 1500

我想实时监控Pusher连接,但找不到任何方法。有人可以帮忙??

1 个答案:

答案 0 :(得分:1)

目前,您无法获得当前为您的应用打开的关联数量的实时统计信息。但是,这是我们目前正在调查的内容。

就Pusher和Google Analytics之间的数字差异而言,通常情况下,Google Analytics使用不同的方法来跟踪用户是否在网站上。我们确信我们的连接计数是正确的,但并不是说您的计数可能不会出现意外原因。

连接被视为与Pusher的WebSocket连接。使用Pusher JavaScript库时,在创建新的Pusher实例时会创建一个新的WebSocket连接。

var pusher = new Pusher('APP_KEY');
Channel subscriptions are created over the existing WebSocket connection (known as multiplexing), and do not count towards your connection quota (there is no limit on the number allowed per connection).

var channel1 = pusher.subscribe('ch1');
var channel2 = pusher.subscribe('ch2');

// All done over as single connection

// more subscriptions
// ...

var channel 100 = pusher.subscribe('ch100');

// Still just a 1 connection

连接高于预期的常见原因

  • 用户打开多个标签

如果用户有多个标签打开到同一个应用程序,则会创建多个Pusher实例,因此将使用多个连接,例如打开2个标签表示建立了2个连接。

  • 应用程序编码错误

如上所述,每次实例化新的Pusher对象时都会创建一个新连接。因此,可以在同一页面中创建许多连接。

  • 使用我们的库的旧版本

我们的连接策略随着时间的推移而有所改进,我们建议您及时了解最新版本。

具体来说,在我们的JS库的较新版本中,我们在服务器和客户端之间执行乒乓请求,以验证客户端是否仍然存在。

  • 其他补救措施

虽然我们的努力总是保持连接无限期地连接到应用程序,但如果您觉得在您的方案中有效,则可以手动断开连接。可以通过拨打Pusher.disconnect()来实现。下面是一些示例代码:

var pusher = new Pusher("APP_KEY");
var timeoutId = null;
function startInactivityCheck() {
    timeoutId = window.setTimeout(function(){
        pusher.disconnect();
    }, 5 * 60 * 1000); // called after 5 minutes
};

// called by something that detects user activity
function userActivityDetected(){
    if(timeoutId !== null) {
        window.clearTimeout(timeoutId);
    }

    startInactivityCheck();
};

此断开连接如何传输给用户取决于您,但您可以考虑提示他们让他们知道由于长时间不活动,他们不会再接收任何进一步的实时更新。如果他们希望再次开始接收实时更新,则应单击按钮。