首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >推送帐户超过配额

推送帐户超过配额
EN

Stack Overflow用户
提问于 2015-08-07 10:04:41
回答 1查看 821关注 0票数 0

为了进行实时更新,我们在应用程序中使用普瑟

一些非常奇怪的事情发生了--当谷歌分析说我们有大约200同时连接的时,Pusher说我们有1500

我想实时监测推杆连接,但找不到任何方法。有人能帮忙吗?

EN

回答 1

Stack Overflow用户

发布于 2015-08-07 10:15:32

目前,您无法获得当前为您的应用程序打开的连接数量的实时统计数据。然而,这是我们目前正在调查的事情。

至于为什么user和之间的数据不同,这通常是因为使用了不同的方法来跟踪用户是否在网站上。我们相信,我们的连接计数是正确的,然而,这并不是说,没有一个潜在的意外原因,你的计数是高的。

连接被计算为到Pusher的WebSocket连接。在使用Pusher JavaScript库时,当您创建一个新的WebSocket实例时,会创建一个新的WebSocket连接。

代码语言:javascript
复制
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()来实现。下面是一些示例代码:

代码语言:javascript
复制
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();
};

如何将这种断开连接传输给用户取决于您,但您可以考虑提醒他们让他们知道,由于长期不活动,他们将不会收到任何进一步的实时更新。如果他们想再次接受实时更新,他们应该点击一个按钮。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31875067

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档