服务器到客户端响应asp.net

时间:2013-12-27 07:05:54

标签: c# asp.net

我的情况是有两台服务器。服务器1中的Web应用程序从真实物理设备获取值。物理设备发送一个值,如Time = 60.此值将发送到托管另一个Web应用程序的服务器2。在服务器2中,网页接收该值并显示从60(从服务器1接收的值)向下计数到0显示给客户端的标签。服务器1对服务器2中的Web应用程序的响应是异步的。任何方向表示赞赏。提前致谢

在服务器1的Web应用程序中,我已完成将“计时器值60”发布到服务器2中的Web应用程序(../ Test / Default.aspx)

protected void Page_Load(object sender, EventArgs e)
{
    var response = Post.Data("server2/Test/Default.aspx", new NameValueCollection() {
        { "GameStart", "True" },
        { "Timer", "60" },      
        { "GameStop", "True" },
        { "WinningNumber", "35" }         
    });
}

public static class Post
{
    public static byte[] Data(string uri, NameValueCollection pairs)
    {
        byte[] response = null;
        using (WebClient client = new WebClient())
        {
            response = client.UploadValues(uri, pairs);
        }
        return response;
    }
}

现在在服务器2中,我已完成以下操作以获取请求,我也获得了该值。但它不会在lblTimer中显示值,因为我相信页面已经呈现。如何在标签中显示计时器

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {         
        if (Request.Form.Count > 0)
        {
            string Timer = Request.Form["Timer"];
            lblTimer.Text = Timer;
        }
    }
}

2 个答案:

答案 0 :(得分:1)

听起来您的问题实际上是关于更新已呈现的网页上的值。

看一下使用SignalR。这里提供的教程将帮助您解决具体问题。

在服务器2上,您将创建一个与您的Web客户端连接的集线器,并且每当服务器1向服务器2发送更新时,您将触发此集线器中的方法以将更新推送到您呈现的网页。

带有计时器标签的网页将包含一个可以从服务器触发的JavaScript事件处理程序。然后,JavaScript将负责更新页面上的标签,即使在页面呈现后也是如此。请看一下SignalR网站上的Stock Ticker Tutorial,因为它类似于您要实现的目标;听起来你的情况甚至不像股票选择器那么复杂。

答案 1 :(得分:0)

Server2将把呈现的HTML页面返回给server1。除非你编写一些代码,否则这不会更新server1呈现的HTML ...

您需要解析返回的HTML以提取所需的数据,然后将其显示在您需要的页面中。如果您对server2有任何控制权,那么最好将这个信息而不是网页一起调用Web服务。

另外,假设您的要求比规定的要复杂,否则server1可以在发布到server2之后处理计数器,我假设刚开始游戏?