5

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

因为服务器是托管的,所以我无法使用套接字——只有 http。

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

但是有没有办法反过来做到这一点,即客户端与服务器建立持久连接并写入请求流?

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

从我听到的情况来看,听起来我应该能够做单独的 http 帖子并实现相同或相似的延迟。

4

4 回答 4

1

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

从客户端->服务器建立持久的http连接在技术上是可行的,但是还没有人实现它,因为使用创建单个http请求的正常方法似乎对每个人的目的来说都足够快。

所以这就是我最终要做的,简单地使用 WebRequest.Create 和 HttpWebRequest 类并相信框架正在处理 KeepAlive。在我的原型中,这似乎足够快,尽管实际性能仍有待观察。

于 2012-04-25T13:53:56.070 回答
1

也许WebSocket会很有用。它允许您通过 HTTP 创建一个“套接字”,因此您可以使用它通过 HTTP 将数据从客户端发送到服务器。

于 2016-05-19T00:22:48.563 回答
0

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

我发现这篇 CodeProject 文章说它已在 WCF 4.5 中修复。

你能让客户每 1/10 秒拨打一次新电话吗?如果您使用的是 HTTP 1.1,则 TCP 连接应保持打开状态。

于 2012-04-24T15:26:00.110 回答
0

我不确定这是否是一个好的用例,但SignalR可能对你有用。

于 2012-04-24T15:30:24.400 回答