通过TCP/IP优势WebSockets

M3-*_*n50 12 sockets tcp websocket

我们有一个应用程序连接到服务器并每隔15秒发送一次位置.现在我们的客户要求将我们当前的TCP/IP连接"升级"到WebSocket.原因是他听说它使用的带宽更少,他希望将15秒减少到1秒.(不是公共应用,所以电池耗尽不是真正的问题)

我已经做了一些研究和许多WebSockets与HTTP比较,但只有2或3个WebSocket与TCP/IP的比较.

我已经发现:

  1. WebSockets与TCP/IP基本相同,但TCP/IP在比WebSockets更低的层上工作.
  2. WebSockets可能使用较少的带宽,因为其协议可能比我们当前的协议更有效.
  3. WebSockets在服务器端使用更多资源.

我的问题是:更改现有代码并使用WebSockets代替好的TCP/IP套接字是否值得?

jfr*_*d00 14

您似乎已经知道,webSocket IS建立在TCP/IP连接之上.它是建立在TCP之上的特定协议.

我的问题是:更改现有代码并使用WebSockets代替好的TCP/IP套接字是否值得?

如果您的代码已经与TCP套接字一起使用,并且您不需要与浏览器客户端进行互操作,并且您不需要内置到webSockets中的任何特定功能,那么就没有理由重写功能完善的TCP套接字代码.

我们有一个应用程序连接到服务器并每隔15秒发送一次位置.现在我们的客户要求将我们当前的TCP/IP连接"升级"到WebSocket.原因是他听说它使用的带宽更少,他希望将15秒减少到1秒.(不是公共应用,所以电池耗尽不是真正的问题)

webSocket是否比现有TCP连接带宽更高,完全取决于您现在在TCP连接上运行的协议.如果您现有的协议效率非常低,那么无论是webSocket还是其他东西,您都可以从使用更高效的协议中受益.如果切换到webSocket会减少15秒到1秒之间的任何事情,我会感到惊讶,除非你现在拥有的实现效率非常低.

如果我们能够准确地看到您现有的代码/协议是如何工作的,那么我们只能进一步评论两种协议之间的比较.如果你现在拥有的东西真的很糟糕,那么切换到像webSockets这样专业设计的系统可能对你有所帮助,但是webSockets中没有什么能比其他一些设计良好的协议更有效率.


在普通TCP连接上使用webSocket和其他协议的一些原因如下:

  1. 当您希望浏览器能够连接到您时(浏览器支持普通的http请求和webSocket连接 - 就是这样).

  2. 当您特别想要webSocket提供的消息传递范例类型时,您还没有通过TCP使用的特定协议(换句话说,当webSocket使您无需实现自己的协议时).

  3. 当您想要连接到其他类型的客户端时,可以更轻松快速地使用webSocket连接,而不是其他协议或您的自定义协议.

  4. 当您尝试与Web服务器共享端口时.通过HTTP连接启动的性质然后切换到webSocket协议,webSockets可以在与HTTP服务器相同的端口上运行(与Web服务器共享).

  5. 当您想要与http和webSockets提供的代理和其他网络基础结构的互操作性时.

  • 与第 5 点相关,值得指出的是,互操作性还意味着防火墙和 NAT 路由器更加兼容,因此网络流量被阻止的可能性更小。 (2认同)
  • 比较TCP/IP与WebSocket的速度.(RAW)TCP/IP连接将比WebSocket连接更快,因为WebSocket是TCP/IP之上的层(因此最多必须与TCP/IP本身一样快).应该注意的是,您在TCP/IP之上使用的协议的实现可能比WebSockets更糟糕.例如,您可以保持打开TCP/IP连接,而不是始终打开和关闭TCP/IP连接. (2认同)