首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用XHR-polling关闭套接字连接

使用XHR-polling关闭套接字连接
EN

Stack Overflow用户
提问于 2012-10-22 02:35:41
回答 1查看 1.2K关注 0票数 3

有人知道为什么我的套接字连接在使用xhr-polling时没有关闭吗?这是我想要执行的服务器代码,但在使用xhr-polling时不会触发。套接字连接工作正常(我在varnish后面运行,因为这是一个安全套接字)。我尝试在浏览器卸载时手动发出一个disconnect事件,但这对我来说不是一个最佳的解决方案。

代码语言:javascript
复制
client.on('disconnect', function () {

    delete connected_clients[id];
    console.log('   debug - ' + 'client ' + client.id + 'is disconnected');
    console.log('   debug - ' + 'total number of connected clients is ' + Object.keys(connected_clients).length);               

});

在我的客户端代码中,我像这样连接套接字:

代码语言:javascript
复制
socket = io.connect(BASE_URL, {
    "sync disconnect on unload":true
});

我的服务器端设置如下:

代码语言:javascript
复制
    io.enable('browser client minification');  // send minified client
    io.enable('browser client etag');          // apply etag caching logic based on version number
    io.enable('browser client gzip');          // gzip the file
    io.set('log level', 3);                    // reduce logging
    io.set('match origin protocol', true);     // ssl support
    io.set('sync disconnect on unload', true);
    io.set('transports', [                     // enable all transports (optional if you want flashsocket)
        'xhr-polling',
        'websocket',
        'flashsocket',
        'htmlfile',
        'jsonp-polling'
    ]);  

这是客户端退出浏览器时收到的调试消息

代码语言:javascript
复制
debug: xhr-polling closed due to exceeded duration

我使用的是带有节点0.8.8的socket.io版本0.9.10。

EN

回答 1

Stack Overflow用户

发布于 2013-11-04 18:20:21

由于连接是在您(服务器)和客户端(浏览器)之间进行的,因此在连接关闭时是否会收到通知,由浏览器决定。如果浏览器没有通知您它认为连接已关闭,则无法通知您。

我建议您以一种善待服务器的方式对您的客户端进行编程,在适当地丢弃连接时通知它。在连接被忽略而没有通知的情况下,您只需在一段时间不活动(超时)后关闭连接。

可以把它想象成一个场景,当你给一个朋友发即时消息时。您的朋友可能会好心地通知您,他们即将离开办公桌,不再能够参与对话(断开连接),或者他们也可以在没有通知的情况下离开办公桌(终止浏览器进程),或者更糟糕的是,他们可能有心脏病发作,这将使他们无法参加(停电)。一段时间后,您就会明白他们不再积极参与会话(超时)。

我很抱歉,这里没有魔法。您必须对您的服务器进行编程,以处理它可能正在与断开连接的客户端对话这一事实。

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

https://stackoverflow.com/questions/13000872

复制
相关文章

相似问题

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