我需要关于我的azure项目的帮助。
我有一个工人和一个网络角色。在worker角色中,我有TCP侦听器,它接受Run()方法中连接。每次连接被接受时,我都会创建新的线程来处理接受的客户端。我从物联网设备发送数据。每1100ms 6字节。我从这6个字节中得到了两个整数值。
在网络角色中,我用两个asp托管asp.net网页。net图表和按钮启动。我需要定期添加这些整数值,以便我有趋势,客户端可以实时看到变化。首先使用azure queue实现角色间的数据交互,将消息放入worker角色的队列中,并在web角色中读取消息。
我将图表放在更新面板中,并将计时器设置为每隔1秒刷新一次。我用点击开始按钮启用计时器。在计时器事件中,我从队列读取消息,对其进行处理并将其删除。第二个问题是,我只想显示最后2分钟的趋势( 100个消息4月),我不能保证我将有100个消息在队列中,因为azure队列是FIFO,我可以读取旧数据。
更多的情况是,每当我准备好要发送的消息时,我都会从工人角色推送消息,而在客户端,我只有100分哦图表。或者,我可以编写长拉代码,以便客户端定期从服务器获取消息。我读到了signalR for first solution和经典的ajax jquery for second。
我不确定我是否走在解决这个问题的正确道路上?工作者角色是否可以使用signalR将数据推送到所有客户端,或者我是否可以在web角色中实现jquery。我有点困惑,这是否能按我计划的方式工作,或者我的概念是错误的。
发布于 2015-05-28 10:41:55
您应该使用signalr。
signalr由两部分组成: 1.多个signalr客户端。2.一个signalr服务器。
signalr客户端可以是定义了JavaScript函数的简单html或.aspx文件。
signalr Server可以是控制台、winform或服务。
signalr Server还可以调用任何内部/外部dll、webservices、webapi等等。
如果signalr服务器中有任何新数据,服务器可以调用客户端的JavaScript函数来更新客户端的页面内容,因此您不必在客户端使用计时器来每秒从服务器检索数据。
您还可以将整个最新数据集存储在服务器中,以便当有新的客户端连接时,客户端可以立即获得最新数据。
https://stackoverflow.com/questions/30494298
复制