浏览器及时感知服务端数据变化的方式

需求

在公司,有一个需求,是浏览器实时获取服务端数据变化,然后根据变化做相应的动作。需求场景如下:手机端扫描二维码,然后获取待取件订单列表,点击取件,进行取件,同时远端打印机打印出取件小票。

技术难点

  1. 手机端点击取货,浏览器如何感知到,如何做相应的操作(本文要解决的问题)
  2. 浏览器感知后,如何调用打印服务,进行按照相应的模版打印

技术方案及选型

不断轮询(pull的方式)

所谓不断轮询,就是浏览器保持发送请求,检查服务器是否有新信息返回,服务器对于每次请求均应立即响应。这种方式需要设定合理的时间间隔。例如:邮件客户端可以每隔几分钟检查服务器是否有新邮件。

优点

简单,可靠

局限性

效率不高。如果需要及时获得服务器信息,那么轮询频率就必须非常高,导致服务端压力较大。更适合小型应用。

长轮询(pull的方式)

浏览器发送请求,但是服务器不予以响应,一直到服务器有了新信息才响应客户端。从客户端的角度看它和传统的轮询相同。但从服务器端的角度来看它与传统的轮询相比,减少了服务器端的开销。
例子:网页版聊天工具如webqq(摘抄):
1.用户在网页上发送聊天信息时,网页会给服务器发送请求,服务器将聊天数据存储下来;
2.网页也会向服务器请求

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
客户端服务端数据传输源码客户端服务端数据传输源码客户端服务端数据传输源码客户端服务端数据传输源码客户端服务端数据传输源码客户端服务端数据传输源码客户端服务端数据传输源码客户端服务端数据传输源码客户端服务端数据传输源码客户端服务端数据传输源码客户端服务端数据传输源码客户端服务端数据传输源码客户端服务端数据传输源码客户端服务端数据传输源码客户端服务端数据传输源码客户端服务端数据传输源码客户端服务端数据传输源码客户端服务端数据传输源码客户端服务端数据传输源码客户端服务端数据传输源码客户端服务端数据传输源码客户端服务端数据传输源码客户端服务端数据传输源码客户端服务端数据传输源码客户端服务端数据传输源码客户端服务端数据传输源码客户端服务端数据传输源码客户端服务端数据传输源码客户端服务端数据传输源码客户端服务端数据传输源码客户端服务端数据传输源码客户端服务端数据传输源码客户端服务端数据传输源码客户端服务端数据传输源码客户端服务端数据传输源码客户端服务端数据传输源码客户端服务端数据传输源码客户端服务端数据传输源码客户端服务端数据传输源码客户端服务端数据传输源码客户端服务端数据传输源码客户端服务端数据
您可以使用 `monfox.stack.iec61850` 库来监听服务端数据变化并获取最新值。该库提供了 `IedConnection` 类用于建立与服务端的IEC 61850设备的连接并执行读取和写入操作,以及 `ModelNode` 类用于表示IEC 61850设备的数据模型中的节点。 要监听服务端数据变化并获取最新值,可以使用 `DataListener` 接口和 `IedConnection` 类中的 `addDataListener()` 方法。具体步骤如下: 1. 创建一个实现了 `DataListener` 接口的类,并实现 `dataValuesChanged()` 方法,该方法将在服务端数据发生变化时被调用。例如: ``` public class MyDataListener implements DataListener { @Override public void dataValuesChanged(List<DataAttributeValue> values) { System.out.println("Data values changed: " + values); } } ``` 2. 建立与服务端IEC 61850设备的连接,并添加 `DataListener` 对象。例如: ``` IedConnection connection = IedConnectionFactory.getConnection("192.168.1.100", 102); ModelNode node = ModelNode.fromString("ied1/LLN0/GOOSE01.PosAmp"); FcModelNode fcnode = FcModelNode.fcDataObject(node, Fc.ST); DataListener listener = new MyDataListener(); connection.addDataListener(fcnode, listener); ``` 其中,"192.168.1.100"是服务端IEC 61850设备的IP地址,102是端口号。"ied1/LLN0/GOOSE01.PosAmp"是服务端设备上的数据节点。 3. 在需要的时候读取服务端设备上的数据。例如: ``` ModelNode node = ModelNode.fromString("ied1/LLN0/GOOSE01.PosAmp"); FcModelNode fcnode = FcModelNode.fcDataObject(node, Fc.ST); DataAttributeValue value = connection.readNodeDataAttributeValue(fcnode); System.out.println("Current value: " + value); ``` 以上就是使用 `monfox.stack.iec61850` 库监听服务端数据变化并获取最新值的基本步骤。希望对您有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值