首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >延迟的socket.io响应,以及“警告- websocket连接无效”

延迟的socket.io响应,以及“警告- websocket连接无效”
EN

Stack Overflow用户
提问于 2013-08-18 18:43:54
回答 1查看 3K关注 0票数 1

我正在一个AWS nodeJS实例上运行一个socket.io + EC2 + httpd应用程序。

在加载页面时,记录器提供以下信息:

代码语言:javascript
复制
GET / 200 2ms - 1.23kb
GET /javascripts/script.js 304 1ms
   debug - served static content /socket.io.js
GET /stylesheets/style.css 304 1ms
GET /stylesheets/style.css 304 1ms
GET /images/052.png 304 1ms
GET /Candara.ttf 304 1ms
   debug - client authorized
   info  - handshake authorized EgWLPeyO2uiCTSui01CP
   debug - setting request GET /socket.io/1/websocket/EgWLPeyO2uiCTSui01CP
   debug - set heartbeat interval for client EgWLPeyO2uiCTSui01CP
   warn  - websocket connection invalid
   info  - transport end (undefined)
   debug - set close timeout for client EgWLPeyO2uiCTSui01CP
   debug - cleared close timeout for client EgWLPeyO2uiCTSui01CP
   debug - cleared heartbeat interval for client EgWLPeyO2uiCTSui01CP

此时,事情将停止大约5秒,之后:

代码语言:javascript
复制
   debug - setting request GET /socket.io/1/xhr-polling/EgWLPeyO2uiCTSui01CP?t=1376937523124
   debug - setting poll timeout
   debug - client authorized for 
   debug - clearing poll timeout
   debug - xhr-polling writing 1::
   debug - set close timeout for client EgWLPeyO2uiCTSui01CP
   debug - setting request GET /socket.io/1/xhr-polling/EgWLPeyO2uiCTSui01CP?t=1376937523490
   debug - setting poll timeout
   debug - discarding transport
   debug - cleared close timeout for client EgWLPeyO2uiCTSui01CP

在此之后,据我所知,事情开始正常工作,事件被触发和接收,没有延迟(如果事件在上面描述的5秒延迟之前被触发,则在延迟完成后才会被处理)。问题是如何消除5秒的延迟。

客户端JS如下所示:

代码语言:javascript
复制
window.onload = function () {
  var socket = io.connect("http://xxx.us-west-2.compute.amazonaws.com", {resource: "/socket.io"});

服务器端JS如下所示:

代码语言:javascript
复制
var express = require('express');
var app = express();
var io = require("socket.io").listen(app.listen(3000));

我的httpd.conf文件如下所示:

代码语言:javascript
复制
ProxyPreserveHost On
ProxyPass / http://localhost:3000/
ProxyPassReverse / http://localhost:3000/

<Proxy *>
    Order deny,allow
    Allow from all
</Proxy>

<Location />
    allow from all
</Location>

如何避免初始延迟并建立与socket.io的健康连接?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-19 19:11:07

我通过将允许的传输方法限制为“xhr-轮询”和“jsonp-轮询”来解决这个问题。我认为这是因为Apache/2.2.25不提供对其他文件的支持。

相关代码被添加到服务器端:

代码语言:javascript
复制
io.set("transports", ["xhr-polling", "jsonp-polling"]);
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18302507

复制
相关文章

相似问题

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