加载页面后将内容推送到客户端

时间:2012-02-24 13:00:46

标签: c# asp.net

我想知道以下是否可行:

我有一个我在网站上引用的dll。这个DLL进行远程套接字连接。套接字连接在后台等待,并且在套接字收到一些数据后,dll通过事件报告数据。

在加载页面期间打开连接。

现在,我会在新数据到达时更新页面上的标签。

我不确定这是怎么回事。我假设我可以在页面上设置一些更新控件的计时器,但它似乎并不“最佳”,因为我已经通过我的事件调用了代码。 “最佳”UpdatePanel或接口等待事件的任何更新,并在事件发生时“更新”而不是基于时间。

我的问题是 - 这可能吗?

3 个答案:

答案 0 :(得分:2)

您可以使用称为“长拉”或“网络套接字”的技术。

有像SignalR这样的图书馆可以帮到你。

他们通常在客户端的浏览器支持时使用Web套接字,而在不支持时长时间使用。

使用这些库,您可以根据需要将命令/数据从服务器“推送”到客户端的浏览器。

答案 1 :(得分:1)

你应该考虑转过身来;而不是异步启动后面的代码调用,然后更新客户端,你应该将原始页面传递给客户端。

页面加载到客户端后,您可以对服务器进行AJAX调用以检索所需的数据 - 并在发生这种情况时显示一点“我正在加载”符号。

Page Methods are ideal for this.

经典的ASP.Net网页应该在用户请求期间持续。发生回发时,它会有效地从用户的viewstate,session和您维护的任何其他状态重建调用状态。例如,它从不关心用户是否会离开(虽然它可能会感到有些孤独)。

让它长时间停留在很多方面都存在问题,但是,你可以实现client callbacks。但是,虽然服务器启动了这个,但客户端管理生命周期,因此它类似于页面方法。

答案 2 :(得分:1)

服务器无法推送客户端,这是Web工作的规则。 有两种方法可以完成您的任务。

  1. 在页面上放置计时器并在服务器上发出请求,如果发生了变化,请看
  2. 打开客户端和服务器之间的长连接,就像facebook一样。那听了 到事件并从服务器获取数据。它可以是,例如xmpp或任何其他。