【问题标题】:Push messages from Azure worker role to asp.net web page hosted in web role将消息从 Azure 辅助角色推送到托管在 Web 角色中的 asp.net 网页
【发布时间】:2015-05-28 18:41:55
【问题描述】:

我需要有关我的 azure 项目的帮助。

我有一个工人和一个网络角色。在工作角色中,我有 TCP 监听器 在 Run() 方法中接受连接。每次连接被接受 我创建了处理接受的客户端的新线程。我从物联网设备发送数据。 每 1100 毫秒 6 个字节。我从这 6 个字节中得到了两个整数值。

在网络角色中,我使用两个 asp 托管 asp.net 网页。网图和按钮开始。 我需要定期添加这些整数值,以便我有趋势并且客户可以实时看到变化。 首先,我使用 azure queue 实现角色之间的数据事务,将消息放入 worker 角色的队列中,并在 web 角色中读取。

我将图表放在更新面板中并设置计时器以每 1 秒刷新一次。 我通过单击开始按钮启用计时器。 在计时器事件中,我从队列中读取消息,处理它并删除它。 后来我意识到这种情况很糟糕,因为如果我有两个客户端在不同的计算机上观看网页怎么办(一个删除消息而其他人看不到它)。第二个问题是我只想显示最近 2 分钟的趋势(4 月 100 条消息),我不能保证队列中有 100 条消息,并且因为 azure 队列是 FIFO 我可以读取旧数据。

更合理的情况是,每次我准备好发送一条消息时,我都会从工作角色推送消息,而在客户端设法只有 100 点哦图表。或者我可以编写长拉代码,以便客户端定期从服务器获取消息。我正在阅读有关第一个解决方案的 signalR 的第二个解决方案的经典 ajax jquery。

我不确定我是否走上了解决这个问题的正确道路?工作角色是否可以使用 signalR 将数据推送到所有客户端,或者我可以在 Web 角色中实现 jquery。我有点困惑,这是否可以按我计划的方式工作,或者我的概念是错误的。

【问题讨论】:

    标签: jquery asp.net azure


    【解决方案1】:

    你应该使用信号器。

    signalr 由两部分组成: 1. 许多 signalr 客户端。 2. 一台信号服务器。

    signalr 客户端可以是简单的 html 或 .aspx 文件,定义了 JavaScript 函数。

    signalr Server 可以是控制台、winform 或服务。

    信号器服务器还可以调用任何内部/外部 dll、webservices、webapi 等等。

    如果 Signalr 服务器中有新数据,服务器可以调用客户端的 JavaScript 函数来更新客户端的页面内容,因此您不必在客户端中使用计时器每秒从服务器检索数据。

    您也可以将整套最新数据存储在服务器中,这样当有新的客户端连接时,客户端可以立即获取最新数据。

    【讨论】:

      猜你喜欢
      • 2011-09-17
      • 2012-06-11
      • 2013-01-06
      • 1970-01-01
      • 2011-11-06
      • 2014-08-29
      • 2013-08-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多