没有websockets的浏览器的异步推送消息传递

时间:2014-04-08 18:56:44

标签: javascript jquery python asynchronous websocket

我们有一个基于浏览器的应用程序,目前使用websockets从我们的服务器异步接收消息。对于websockets,我们在服务器端使用python autobahn,在客户端使用javascript / jQuery。如果websocket连接因任何原因失败,我们也有自动故障转移到长轮询。当我们的应用程序收到来自服务器的频繁消息时,所有这些都是有意义的。

但是,我们的基础架构正在发生一些变化,现在我们希望很少收到消息。唯一的问题是我们希望尽可能少地接收这些消息(这意味着长时间的轮询只是略微需要)。如果我们打开一个websocket并保持打开状态,但大部分时间没有任何事情发生,那么我们就是在浪费资源而被迫发送保持活动消息只是为了保持websocket打开。

那么,除了websockets之外,还有其他一些不错的异步消息传递技术吗?是否有一些技术可以在客户端使用(希望在Javascript或jQuery中),它可以监听来自服务器的偶然消息并做出相应的响应,这些技术不会使用websockets?

1 个答案:

答案 0 :(得分:0)

我恐怕没有。

Server Sent Events,但未在retarded browsers中实施。因此,您唯一安全的选择是长轮询。

WebSocket协议定义ping and pong frames。 Ping帧可以短至2个字节,pong将是6个字节(标头为2个,密钥为4个),因此开销不大。如果您的服务器发送ping帧,Chrome将以pong帧响应。我编写了一个WebSocket服务器,这就是我保持连接活动并检测半开连接的方式。

干杯。