7

我有一个应用程序,用户可以在其中使用一个小切换开关/按钮来更改切换值,true并且false更改会自动发送到服务器,而无需用户明确按下“保存”之类的东西。

现在如果用户快速连续按两次拨动开关,服务器是否可能会乱序接收数据包,从而最终存储错误的值?服务器是指在服务器上运行的应用程序逻辑,而不是操作系统网络堆栈。

我知道 TCP 数据包已编号,因此接收操作系统在将它们传递给应用程序之前对其进行排序,并且 HTTP 在 TCP 之上运行。然而,我很好奇的部分是 HTTP 在什么情况下创建/不创建新的 TCP 连接。

注意我正在使用 jQuery 发送 AJAX 请求,并且我假设它们保证以与调用 jQuery 库的顺序相同的顺序发送。这个假设有效吗?

4

1 回答 1

5

http 协议中没有这样的保证。即使某些实现实际上可以保证它,您也不应该依赖它。

您可以这样做:维护一个点击计数(或者如果您愿意,可以将其称为版本号),并将其发送到服务器。在服务器上,当您更改状态时存储最后一个版本号,并使用此数字来检查您是否永远不会覆盖更新的值。

于 2012-07-03T10:45:29.797 回答