使用Heroku进行套接字轮询时响应时间长
Long response time on socket polling with Heroku
我的客户端正在使用socket.io
1.0+lib连接到套接字服务器,如下所示:
$scope.socket = io.connect( "/gateway" );
在服务器端,我启动express服务器和套接字服务器,连接为:
httpServer = http.createServer( app ).listen( process.env.PORT, process.env.IP || "0.0.0.0", function() {
io = require( 'socket.io' )( httpServer ).of("/gateway");
io.on('connection', function( socket ) {
// socket events here
}
});
然后在heroku上测试该项目。让我很困扰的是这个来自chrome dev工具的屏幕
您可以看到,不断有2个轮询请求被执行。一个在毫秒内得到响应,另一个大约需要26秒。如果我点击其中一个,我可以看到它们之间的真正区别是请求方法:使用POST的方法得到快速响应,使用GET的方法保持挂起状态,直到大约26秒后得到响应(或超时)。
在我的开发环境(c9.io)中,我看不到这种行为,但在测试(heroku自由节点)中我看到了这种行为。
可能正因为如此,我只在heroku上得到了一些其他奇怪的行为,例如在tab close上我没有收到disconnect
事件,而在c9上我收到了。
有人面临同样的问题吗?有解决办法吗?
事实证明,当使用polling
传输时,对可见的打开连接的长响应被滥用。在这种情况下,一个25秒的连接被保持打开,用于客户端-服务器通信。这是正常的,尽管你必须了解它——一些日志模块/解决方案可能会将其视为长响应,并不断警告你。
简而言之,
- 如果使用
sebsocket
传输,则会始终打开一个websocket连接 - 如果使用
polling
传输,则每25-26秒将(重新)建立一个新的GET
连接
相关文章:
- 如何使用HTML5与UDP套接字通信
- 在node.js中写入ECONNRESET错误和套接字连接检查
- java,javascript签名的小程序(文件选择,ftp上传)安全性/套接字异常
- 套接字服务器在本地获得500毫秒的往返时间
- 使用套接字io和angularjs处理频繁变化的时间序列数据的策略
- 响应来自 Java 套接字的 AJAX 请求
- 从Node.js中的活动套接字重新创建http请求和响应
- 使用Heroku进行套接字轮询时响应时间长
- 在c#中为套接字的响应添加报头
- 当使用带有单个套接字的httpAgent时,它会在发送下一个请求之前等待响应吗?
- 过期或时间限制套接字.node.js中的IO连接
- 套接字.IO node.js,如何记录连接时间,避免或考虑页面刷新/多个套接字
- 为什么套接字之间的数据传输需要很多时间
- 套接字.错误的请求,响应{"代码":0,"消息";传输未知"}
- 如何在浏览器中查看Web套接字响应
- Net套接字-确定在套接字on("data")下当前正在响应哪个请求
- 如何在套接字响应后更改 ng 重复变量
- 读取 Node.js 中的套接字连接响应
- 套接字.从客户端获得两个响应,然后运行代码
- 套接字.IO需要很长时间才能触发断开连接事件