有没有办法在客户端通过JS实现HTTP长连接

如题所述,我在一个特定的服务器需要频繁的请求数据,一直建连请求,建连请求这会有很大的开销,不知道JS有没有办法实现HTTP长连接,后面的数据请求就一直复用这个连接的通道?(忽略websocket)

能不能只通过客户端JS来实现...

可能第一次问的时候没有表述清楚,其实需求是这样子的:

通过一个http请求跟服务器建连,同时服务器返回数据但是不断开这个http的连接,后面客户端可以继续通过这个http连接进行第二次第三次的请求,然后客户端同时维护两个这样的http连接,轮换使用这样子的,有什么有效的实现方法么?
阅读 9.3k
7 个回答
新手上路,请多包涵

使用websocket

websocket.io

http1.1默认已经开启keep-alive,除非服务器主动写入connection-close到header才会关闭连接。所以你的担心是多余的。
你可以通过CRUL命令检查keep-alive是否正常。

curl -Iv http://www.baidu.com 2>&1 | grep -i 'connection #0'

长连接正常时将显示下面的输出

* Connection #0 to host www.baidu.com left intact

Connection... left intact表示服务器没有关闭连接,客户端可以复用连接。

不想用websocket就用长轮询。

消息量一般使用websocket足够,要高端可以考虑 阿里开源的 RocketMQ

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题