发布于 2015-08-07 10:15:32
目前,您无法获得当前为您的应用程序打开的连接数量的实时统计数据。然而,这是我们目前正在调查的事情。
至于为什么user和之间的数据不同,这通常是因为使用了不同的方法来跟踪用户是否在网站上。我们相信,我们的连接计数是正确的,然而,这并不是说,没有一个潜在的意外原因,你的计数是高的。
连接被计算为到Pusher的WebSocket连接。在使用Pusher JavaScript库时,当您创建一个新的WebSocket实例时,会创建一个新的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();
};如何将这种断开连接传输给用户取决于您,但您可以考虑提醒他们让他们知道,由于长期不活动,他们将不会收到任何进一步的实时更新。如果他们想再次接受实时更新,他们应该点击一个按钮。
https://stackoverflow.com/questions/31875067
复制相似问题