我们有一个连接到服务器并每15秒发送一次位置的应用程序。现在我们的客户要求将我们当前的TCP/IP连接"升级"到WebSocket。这样做的原因是他听说它使用更少的带宽,他想把15秒缩短到1秒。(不是公共应用,所以电池消耗不是真正的问题)
我已经做了一些研究和许多WebSocket与HTTP的比较,但只有2或3 WebSocket与TCP/IP的比较。
我已经发现了:
- WebSockets基本上与TCP/IP相同,但TCP/IP工作在比WebSockets更低的层。WebSockets可能会使用更少的带宽,因为它的协议可能比我们当前的协议更有效。 WebSockets在服务器端使用更多的资源。
我的问题是:是否值得改变我们现有的代码和使用WebSockets,而不是好的旧的TCP/IP套接字?
您似乎已经知道,webSocket是建立在TCP/IP连接之上的。它是一个建立在TCP之上的特殊协议。
我的问题是:是否值得改变我们现有的代码并制作使用WebSockets而不是好的旧TCP/IP套接字?
如果你的代码已经与TCP套接字一起工作,你不需要与浏览器客户端互操作,你也不需要任何内置到webSockets中的特定功能,那么就没有理由重写功能完美的TCP套接字代码。
我们有一个连接到服务器并发送位置的应用程序每15秒一次。现在我们的客户要求"升级"我们当前的TCP/IP连接到WebSocket。原因是他听到了用了更少的带宽,他想把15秒缩短到1秒第二。(不是公共应用,所以电池消耗不是问题)
webSocket是否比你现有的TCP连接带宽效率更高完全取决于你现在在TCP连接上运行的是什么协议。如果你现有的协议是非常低效的,那么你会受益于使用一个更有效的协议,无论是webSocket或其他东西。如果切换到webSocket会将任何事情从15秒减少到1秒,我会感到惊讶,除非你现在所拥有的实现真的很低效。
如果我们能确切地看到你现有的代码/协议是如何工作的,我们才能真正进一步评论两个协议之间的比较。如果你现在的系统真的很糟糕,那么切换到一个专业设计的系统,比如webSockets,可能会对你有所帮助,但是webSockets并没有天生的东西使它们比其他一些设计良好的协议更有效。
使用webSocket而不是普通TCP连接和其他协议的一些原因如下:
-
当你想要一个浏览器能够连接到你(浏览器支持纯http请求和webSocket连接-就是这样)。
-
当你特别想要webSocket提供的消息传递类型范例,并且你还没有一个特定的协议可以在TCP上使用时(换句话说,当webSocket使你不必实现自己的协议时)
-
当你想连接到其他类型的客户端,可以更容易和快速地使用webSocket连接比其他协议或你的自定义协议。
-
当您试图与web服务器共享端口时。通过HTTP连接初始化,然后切换到webSocket协议,webSockets可以在与HTTP服务器相同的端口上运行(与web服务器共享)。
-
当您希望与代理和http和webSockets提供的其他网络基础设施进行互操作性时