【问题标题】:advantage WebSockets over TCP/IPWebSockets 优于 TCP/IP
【发布时间】:2015-10-25 05:47:27
【问题描述】:

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

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

我已经发现了:

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

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

【问题讨论】:

    标签: sockets tcp websocket


    【解决方案1】:

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

    我的问题是:是否值得更改我们现有的代码并制作 使用 WebSockets 而不是好的 ol' 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. 1234563 .
    3. 当您想要连接到其他类型的客户端时,这些客户端可以比其他协议或您的自定义协议更轻松、更快速地使用 webSocket 连接。

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

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

    【讨论】:

    • 与第 5 点相关,值得指出的是,互操作性也意味着防火墙和 NAT 路由器更加适应,因此网络流量被阻塞的可能性更小。
    • @Myst - 是的,这可能是一个重要的好处。这当然是 webSockets 通常运行在 80 端口并以 HTTP 连接开始的原因之一。
    • 比较 TCP/IP 和 WebSocket 的速度。 (RAW)TCP/IP 连接将比 WebSocket 连接更快,因为 WebSocket 是 TCP/IP 之上的一层(因此最多只能与 TCP/IP 本身一样快)。应该注意的是,您在 TCP/IP 之上使用的协议的实现可能比 WebSockets 差。例如,您可以保持 TCP/IP 连接打开,而不是一直打开和关闭 TCP/IP 连接。
    • @Paul - OP 将他们当前的实现称为 TCP 之上的协议。我们不知道该协议是什么,因此我们不知道它与 webSocket 协议的效率相比如何,除非客户端认为 webSocket 可能更有效(尽管可能实际上并不知道)。可以设计出比 webSocket 更高效的特殊用途,但也可以设计出比 webSocket 效率低的东西。所以,这一切都取决于他们已经拥有什么以及需要什么类型的效率 - 两者都没有指定。
    猜你喜欢
    • 2013-09-11
    • 1970-01-01
    • 2015-05-23
    • 2015-07-19
    • 1970-01-01
    • 2016-03-26
    • 2015-05-29
    • 2012-02-16
    • 1970-01-01
    相关资源
    最近更新 更多