我正在使用HttpListener和HttpContexts,我知道在编写响应时你可以确定它是否发送,但是如何判断客户端是否已收到它?
我想你可以在服务器和客户端之间设置某种消息确认系统,但我想知道是否有一些东西可以透明地为我做这件事。
使用WCF对类似问题的响应是指ReliableSessions,但我不确定在我的应用程序中使用WCF是否值得。我对WCF不是很熟悉,但在我看来,它并不适合传统的Web服务器请求/响应模型,而是更多地适应不同类型的系统类型(这更像是我从查看文档中获得的直觉可靠的会议,所以如果我错了请纠正我。)
谢谢!
答案 0 :(得分:2)
“我想你可以在服务器和客户端之间建立某种消息确认系统”。我担心你 。 AFAIK在HTTP中没有“本机”确认方法。
答案 1 :(得分:1)
在服务器上,您可以调用Response.Flush,它将同步发送所有当前缓冲的数据(和标头)到客户端。通话结束后,您知道数据已移交给TCP堆栈。
ASP.NET没有提供确保刷新TCP缓冲区的方法。即使它确实存在,也可能存在模糊的情况,客户收到响应,但网络吞下了确认。
这是将军问题,无法解决。
此时您需要提供有关您意图的详细信息,因为正如我所说,没有完美的解决方案。