0

我需要将数据从 Web 服务器流式传输到客户端。数据是收集并存储在服务器上的位置数据。客户端将单击 html 页面上的按钮以“选择加入”以开始接收数据。此数据永无止境,并且至少有一个客户端需要 24-7 接收数据,并尽可能少地中断。流式传输的数据将是特定于客户端的,因为每个客户端都不会收到完全相同的数据。

我已经通过套接字完成了几个多线程 tcp 服务器,而 websockets 是我想攻击它的方式,但要求是它必须在 ie9 中工作。

最初的要求是这是一个 vb.net cgi 可执行文件 - 但在测试期间,我无法“使用”来自 vb.net 可执行文件的流,直到应用程序完成 - 就像它甚至无法刷新标准输出一样虽然我专门使用了 console.out.flush()。因此,如果这不是一个可行的选择,并且我可以用事实来支持这一点,那么我可以改变这个要求。

我还阅读了很多关于使用第三方服务器流式传输数据的信息,例如 Orbit 和 APE,我认为是其中的几个,但要求是 1 个服务器 - 网络服务器。不需要其他硬件。

根据我的发现,我很确定 vb.net CGI 不是理想的解决方案,但它是可行的还是我需要放弃该解决方案并转向更新的技术 ISAPI?任何想法或建议,即使它们只是为我指明了正确的方向,也将不胜感激。

4

1 回答 1

0

你可能会走几条路。

如果您会使用 C# .Net,那么您可能会研究 Silverlight 解决方案。但它需要在浏览器中安装插件(如 Flash)。这里的好处是,您可以通过普通套接字从服务器纯实时发送数据。同时 Silverlight 使用 .Net,因此它可以共享一些代码。这有助于开发过程。它在不同浏览器中的工作方式也是相同的。

您可能会看到使用带有 Java 后端的 Java Applet 的类似解决方案(甚至可以是 .Net,但同样,当两者使用相同的语言时更容易开发)。

另一种选择是在前端使用 WebSockets,但正如您所知,IE9 及以下版本不支持它(IE10 承诺支持),Opera 也不支持它。后端可以按照您喜欢的方式完成。但是请记住,WebSockets 使用帧,对于恒定但很小的数据包效率不高,因为如果您发送 10 个字节,那么它将创建 2-12 个字节的帧,以及平均 40 个字节的 TCP 数据包头。

要支持较旧的浏览器,您可以查看长轮询,但它不如 websockets 可靠。

同样重要的是计算将使用您的系统的数据量和用户的大致数量。根据计算,您将获得关于它的真实程度以及需要处理什么服务器的大致信息。

于 2012-04-10T17:29:37.930 回答