2012-02-24 76 views
1

我不知道以下是否可能:加载页面后将内容推送到客户端

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

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

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

我不知道这将如何工作。我假设我可以在页面上设置一些更新控件的计时器,但它看起来并不“最佳”,因为我已经通过我的事件调用了代码。 “最佳”UpdatePanel或接口等待事件的更新以及事件发生时的“更新”,而不是基于时间。

我的问题是 - 这可能吗?

+2

它更容易加载页面的客户端上,然后发起呼叫通过AJAX的服务器,让页面的方法等待(在页面加载,但你可以显示一个小“加载”符号的地方),然后,当它收到来自服务器的响应,更新。这是一个很好的用例页面方法 - 看http://ajax.asp.net/docs/tutorials/ExposingWebServicesToAJAXTutorial.aspx。一旦您的原始网页已经交付,你真的不应该有任何东西,以保持它活着背后侧的Web表单/码 - 它应该是基于请求 - 响应。 – dash 2012-02-24 13:03:18

回答

2

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

有图书馆,如SignalR,可以帮助你。

当客户端的浏览器支持时,它们通常使用Web套接字,而当客户端的浏览器支持时,它们通常会使用Web套接字,

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

1

你应该考虑扭转这种情况;而不是异步启动来自代码的调用,然后更新客户端,则应将原始页面交付给客户端。

一旦页面加载客户端,您可以向服务器发出AJAX调用以检索您想要的数据 - 并在发生这种情况时显示一个“我正在加载”的符号。

Page Methods are ideal for this.

经典的ASP.Net网页应该持续为用户请求的持续时间。发生回发时,它可以有效地从用户的视图状态,会话和您维护的任何其他状态重建呼叫状态。例如,它从不关心用户是否离开(虽然它可能感觉有点孤单)。

让它在更长的时间内运行有很多问题,但是,您可以实施client callbacks。然而,虽然服务器启动了这个,但客户端管理生命周期,所以它类似于页面方法。

1

服务器无法推送客户端,这是网络工作原理。 有两种可能的方式来完成你的任务。在页面上

  1. 使Timer,并在服务器请求太多看,如果有什么改变了客户端和服务器之间
  2. 长期开放拉连接,像Facebook一样。这听取
    的事件,并从服务器获取数据。它可以是,例如xmpp或任何其他。
相关问题