websocket连接可靠吗?

时间:2016-03-17 08:27:03

标签: java websocket

我一直认为Web套接字可以保证数据的传输,因为它建立在可靠的TCP之上。我正在阅读此链接上的Java Web套接字API文档 https://docs.oracle.com/javaee/7/api/javax/websocket/RemoteEndpoint.html
它说

  

无法保证成功向对等方传递Web套接字消息,但如果发送消息的操作导致容器已知错误,则API会抛出该消息。

TCP不应该保证邮件传递吗?

2 个答案:

答案 0 :(得分:6)

可靠!=保证。可靠意味着,如果失败(或成功),您将收到通知 - 如果最终用户拔掉他们的局域网电缆,即使tcp也不能保证交付。'

答案 1 :(得分:2)

"保证"有点误导。 TCP将最好地尝试发送由一个TCP堆栈发送的有序数据,以便由另一个TCP堆栈按顺序接收。如果无法做到这一点,TCP堆栈将处于错误状态。这与您从商店获得的退款保证没有什么不同;失败模式意味着你得到一个替代品并再试一次...最终如果失败太多并且收回你的钱(例如,连接损坏)。

同样...... TCP"保证" 意味着数据是"保证"在两个堆栈的应用程序级别正确处理。这是应用程序协议的责任。完成工作后,TCP将其交给上面的应用层,实现pub / sub,http,rpc,元组空间,电子邮件,ftp,事务,数据库等等......