Web services 从套接字移动到Web服务:双超时

Web services 从套接字移动到Web服务:双超时,web-services,rest,Web Services,Rest,我有一个客户机/服务器应用程序,它通过tcp/ip套接字通过通常不可靠的无线网络进行通信。 为了使它在连接错误时响应,我创建了这个协议。 1) 客户端发送请求 2) 服务器确认接收到请求(超时1秒) 3) 客户端等待时服务器处理(可能需要10秒)(超时20秒) 4) 服务器发送响应 有时请求命令会丢失(客户端通过打开的连接发送命令,但服务器从未接收到),但通过此协议,我立即知道命令是否已被接收并将被处理 我要问的是(我已经用RESTSharp和ServiceStack做了一些测试):有可能用we

我有一个客户机/服务器应用程序,它通过tcp/ip套接字通过通常不可靠的无线网络进行通信。 为了使它在连接错误时响应,我创建了这个协议。 1) 客户端发送请求 2) 服务器确认接收到请求(超时1秒) 3) 客户端等待时服务器处理(可能需要10秒)(超时20秒) 4) 服务器发送响应 有时请求命令会丢失(客户端通过打开的连接发送命令,但服务器从未接收到),但通过此协议,我立即知道命令是否已被接收并将被处理

我要问的是(我已经用RESTSharp和ServiceStack做了一些测试):有可能用webservice做这样的事情吗?客户机在响应之前收到已收到请求的确认

谢谢,
Mattia

在应用程序代码中看到这种类型的错误处理很奇怪,因为如果HTTP请求不成功,它就会抛出异常


要在应用程序代码中获得确认回执,您需要添加第二个请求,实现某种技术,以使服务器通知客户端不同的事件,例如,收到了什么请求ID。

是的,它将抛出和异常,但需要多长时间?如果请求进展顺利,我可以等待20秒等待数据响应,但如果情况不好,我需要立即(或在一秒钟内…)知道。我很想转到REST体系结构,但对我来说,基本上是立即知道客户端是否在等待10秒以处理数据,或者是否在等待“无法访问的主机”或类似的东西……您可以在HTTP或ServiceStack客户端中设置特定的超时属性。您可以通过使用异步调用来最小化“感知的响应时间”,不阻塞UI,让他们在后台处理HTTP请求时继续使用UI。当然,不是这样,用户需要立即使用正在查询的数据,因此我可以异步请求(我已经在使用套接字堆栈进行此操作)但这并不能解决问题。我的问题是:1)如果一切正常,我最多可以等待20秒(更多的意思是数据处理有问题,另一个问题)2)连接不正常,服务器没有收到我的请求,或者无法访问,我需要知道1中的用户必须确定正在等待数据,这是一个优先级,所以我只需要知道我是否可以用WebService控制它。如果有人告诉我,这是不可能的,是基于Web服务的HTTPROSTQUES/HTTPROSPANSE协议,不允许或控制类似的东西在中间的承认,我将继续与我的套接字TCP/IP协议…谢谢“如果一切正常”对不同的人意味着不同的事情。N秒内听不到响应可能意味着防火墙规则丢弃数据包,或者服务器需要很长时间才能响应。我从来没有在应用层构建过这种逻辑,我从来没有见过或听说过通过HTTP实现这种逻辑(甚至对于web客户端)。使用和配置HTTP客户机,除非您发现了原因。