我想将数据从客户端(桌面或移动设备)流式传输到托管服务器。它不是大量的数据,每1/10秒1个字节 - 但数据需要立即流式传输(无缓冲),并且连接需要长时间保持活动状态(比如最多10分钟)。
因为服务器是托管的,所以我没有能力使用套接字 - 只是http。
我知道在服务器端,如果我连接到客户端,我可以使用持久连接并只写入响应流。
但有没有办法反向执行此操作,其中客户端与服务器有持久连接并且正在写入请求流?
澄清: 我不必将此客户端 - >服务器通信作为持久性http连接完成,我只是想知道是否可能,只是因为我可以与我计划的服务器 - >客户端持久性http连接具有对称性。
从我听到的情况来看,听起来我应该只能做个别的http帖子并实现相同或类似的延迟。
答案 0 :(得分:1)
我会继续提供我自己的问题的答案,这似乎是:
技术上可能从客户端 - >服务器执行持久的http连接,但是没有人实现它,因为使用创建单个http请求的常规方法似乎足够快,可以满足每个人的需求。
这就是我最终做的事情,只需使用WebRequest.Create和HttpWebRequest类,并相信框架正在处理KeepAlive。在我看起来足够快的原型中,虽然现实世界的表现还有待观察。
答案 1 :(得分:1)
也许WebSocket会很有用。它允许您通过HTTP创建“套接字”,因此您可以使用它通过HTTP将数据从客户端发送到服务器。
答案 2 :(得分:0)
AFAIK,当在IIS中托管WCF时,流不起作用。
我发现this CodeProject article表示它已在WCF 4.5中修复。
你能让客户每1/10秒拨打一个新电话吗?如果您使用的是HTTP 1.1,则TCP连接应保持打开状态。
答案 3 :(得分:0)
我不确定这是否是一个很好的用例,但SignalR可能适合你。