ServerSockets 和 Websockets 有什么区别?

OCD*_*Dev 5 dart

似乎有两种方法可以在 Dart 服务器和 Dart 客户端之间保持开放连接:ServerSocket 和 Websocket。

https://www.dartlang.org/dart-by-example/#sockets
https://www.dartlang.org/dart-by-example/#websockets

什么时候最好使用一种而不是另一种?

Fox*_*x32 5

Websocket是建立在基于TCP协议(ServerSocketSocket)的顶级普通套接字上的协议。Websockets 让你在编程过程中更加舒适,因为它可以帮助你:

  • 框架:TCP 是基于流的,Websockets 允许您发送包。您不必自己查找包裹的起点和终点。
  • 关闭握手:您可以发送连接关闭原因。
  • 安全性(在浏览器上下文中,在控制台应用程序上下文中不需要)
  • 您还可以通过 Webbrowser API 访问您的 Websocket 服务器。

如果要与使用 TCP 的现有服务器/客户端一起工作,则必须使用 ServerSockets。Websockets 和 ServerSockets 不兼容(出于安全原因是故意的)。由于 Websocket 有更多的内部工作要做,因此性能和吞吐量不会像原始 TCP 一样好,但这一点可以忽略不计。

这两种协议都可以与加密一起使用,Websockets 通过使用 HTTPS 连接 (wss://) 和 TCP 使用 TLS(SecureSocketSecureServerSocket)。

有关 Websockets 的更多详细信息,请查看RFCRawDatagramSocket除了基于 TCP 的 ServerSockets 之外,允许您使用 UDP 协议。