我有一个应用程序,用户可以使用一个小切换开关/按钮更改true和false之间的切换值,更改会自动发送到服务器,而无需用户明确按下“保存”之类的内容.
现在,如果用户快速连续按两次切换开关,服务器是否可能无序接收数据包,从而最终存储错误的值?服务器是指服务器上运行的应用程序逻辑,而不是操作系统网络堆栈.
我知道TCP数据包是编号的,因此接收操作系统在将它们传递给应用程序之前对它们进行排序,并且HTTP在TCP之上运行.然而,我很好奇的部分是在什么情况下HTTP创建/不创建新的TCP连接.
解决方法
http协议中没有这样的保证.即使某些实现可能实际上保证它,您也不应该依赖它.
您可以这样做:维护点击次数(或者如果您愿意,可以将其称为版本号),然后将其发送到服务器.在服务器上,更改状态时存储最新版本号,并使用此数字检查是否永远不会覆盖更新的值.