2012-04-24 71 views
4

我想要将数据从客户端(桌面或移动设备)传输到托管服务器。它不是大量的数据,每1/10秒1个字节 - 但数据需要立即流式传输(无缓冲),并且连接需要长时间保持活动状态(比如10分钟)。是否可以通过http传输客户端到服务器的数据?

由于服务器托管,我没有能力使用套接字 - 只是http。

我知道在服务器端,如果我连接到客户端,我可以使用持久连接并写入响应流。

但有没有办法做到这一点反向,其中客户端有一个持久连接到服务器,并写入请求流?

澄清: 我不必将此客户端 - >服务器通信完成为持久http连接,我只是想知道是否有可能,这样我就可以与我计划的服务器对称 - >客户端持久http连接。

从我听到的,这听起来像我应该能够做单个http帖子,并实现相同或类似的延迟。

回答

1

我会继续和提供答案我自己的问题,这似乎是:

它在技术上可能做到从客户机 - >服务器的持久HTTP连接,但没有人实现它,因为使用创建单个http请求的常规方法似乎足够快,适合每个人的目的。所以这就是我最终做的,只需使用WebRequest.Create和HttpWebRequest类并相信框架正在处理KeepAlive。在我看来足够快的原型中,尽管真实世界的表现还有待观察。

+0

它在现实世界中足够快吗? – Felix 2013-02-21 22:24:41

+0

@nissemand我已经非正式地测试了它的跨国(美国),似乎有相当不错的响应时间(可能小于250毫秒) - 这是客户端 - >服务器 - >另一个客户端 – PhilChuang 2013-02-22 01:37:18

+0

真棒,你认为这将工作为更大数量的数据?说一个vdieo? – Felix 2013-02-22 02:00:07

0

AFAIK,当WCF托管在IIS中时,流式传输不起作用。

我发现this CodeProject article表示它已在WCF 4.5中修复。

你能让客户每1/10秒发出新的呼叫吗?如果您使用HTTP 1.1,则TCP连接应保持打开状态。

0

我不确定这是否是一个好用例,但SignalR可能适合您。

+1

我与SignalR的Damian Edwards谈过,看起来像SignalR只是服务器 - >客户端持久连接。 – PhilChuang 2012-04-24 16:45:29

+0

是的,我不确定这是否合适。 – mgnoonan 2012-04-24 17:58:44

1

也许WebSocket将是有用的。它可以让你通过HTTP创建一个“套接字”,所以你可以用它通过HTTP将数据从客户端发送到服务器。

相关问题