我想知道以下是否可行:
我有一个我在网站上引用的dll。这个DLL进行远程套接字连接。套接字连接在后台等待,并且在套接字收到一些数据后,dll通过事件报告数据。
在加载页面期间打开连接。
现在,我会在新数据到达时更新页面上的标签。
我不确定这是怎么回事。我假设我可以在页面上设置一些更新控件的计时器,但它似乎并不“最佳”,因为我已经通过我的事件调用了代码。 “最佳”UpdatePanel或接口等待事件的任何更新,并在事件发生时“更新”而不是基于时间。
我的问题是 - 这可能吗?
答案 0 :(得分:2)
您可以使用称为“长拉”或“网络套接字”的技术。
有像SignalR这样的图书馆可以帮到你。
他们通常在客户端的浏览器支持时使用Web套接字,而在不支持时长时间使用。
使用这些库,您可以根据需要将命令/数据从服务器“推送”到客户端的浏览器。
答案 1 :(得分:1)
你应该考虑转过身来;而不是异步启动后面的代码调用,然后更新客户端,你应该将原始页面传递给客户端。
页面加载到客户端后,您可以对服务器进行AJAX调用以检索所需的数据 - 并在发生这种情况时显示一点“我正在加载”符号。
Page Methods are ideal for this.
经典的ASP.Net网页应该在用户请求期间持续。发生回发时,它会有效地从用户的viewstate,session和您维护的任何其他状态重建调用状态。例如,它从不关心用户是否会离开(虽然它可能会感到有些孤独)。
让它长时间停留在很多方面都存在问题,但是,你可以实现client callbacks。但是,虽然服务器启动了这个,但客户端管理生命周期,因此它类似于页面方法。
答案 2 :(得分:1)
服务器无法推送客户端,这是Web工作的规则。 有两种方法可以完成您的任务。