是否存在不基于WebSockets的Socket.IO替代方案?

时间:2015-01-08 18:09:31

标签: socket.io real-time

我构建了一个实时应用程序,感谢Socket.IO,它可以服务于许多不同的客户端类型(C#,Java,Browser,...)!我知道有很多Socket.IO替代品,但根据我的理解,一切都或多或少都基于WebSockets。 (我知道如果WebSockets不起作用,Socket.IO会有后备,但是它们更不像“劣等的解决方法”那么可以说......)

我的问题是:是否有可用的实时引擎不是基于WebSockets,但仍可以为所有不同的客户提供服务?

2 个答案:

答案 0 :(得分:2)

您没有说明您的终点是什么。如果其中一个端点是一个纯粹具有浏览器和Javascript内置功能的浏览器,那么webSocket是您从浏览器到其他目的地的连续连接的唯一途径。

如果不支持webSocket(在较旧的浏览器中),则其他socket.io回退(例如xhr-long-polling)是下一个最佳选择。由于浏览器具有有限的通信功能,如果您不能使用webSocket,那么ajax调用是您唯一的其他通常支持的选项,而不需要在每个浏览器上插件(例如Flash或Java或类似的东西)。 socket.io已经支持浏览器中可用的下一个最佳选项 - 如果您谈论的是没有自定义插件的标准浏览器,那么您无法做得更好。

如果您的端点不一定包含浏览器,并且您可以使用任何所需的语言或库,那么您可以使用普通的TCP套接字,然后在TCP套接字上使用您想要的任何协议。

答案 1 :(得分:0)

The WebSocket protocol在服务器和客户端之间建立双向通信通道;他们彼此说得更自然。服务器可以向客户端发送内容,反之亦然。在http中,它只是向一个方向发展,有一个请求和响应,所有内容都需要通过客户端的请求启动。

根据我的经验,像多人游戏或聊天这样的实时webApps变得更容易开发,并且显然比使用http创建更少的开销 - 但是你仍然可以使用http做同样的事情或多或少(见例如{ {3}})。 看看gmail或其他现有的webApps,它们都使用http(Socket.io作为后备也是如此)并且它运行良好。