ServerSockets和Websockets之间有什么区别?

时间:2014-07-20 13:25:23

标签: dart

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

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

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

1 个答案:

答案 0 :(得分:4)

Websocket是在顶级普通套接字上构建的协议,它基于TCP协议(ServerSocketSocket)。 Websockets在编程过程中给您带来更多的舒适感,因为它可以帮助您:

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

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

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

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