【发布时间】:2021-02-26 04:25:24
【问题描述】:
我想抓取一个使用 LightStreamer 显示实时数据的网站。如何添加事件处理程序以在 Javascript 中接收这些消息?
不幸的是,LightStreamer 没有足够的教程。
以下示例对我有用:
var myEH = function ff(msg) {
console.log("message receieved.");
};
App.ls.getSubscriptions()[0].addListener({ onItemUpdate : myEH})
当我重新发送“收到的消息”时。使用 msg 变量,我看到一个无意义的数组,这与我在 Chrome DevTools(网络选项卡> ws 部分)中看到的不同。
此外,每个订阅都有 isActive() 和 isSubscribed() 方法。当我根据 getSubscriptions() 返回的数组元素检查它们时,我发现它们都是正确的。但是,实际上,Chrome DevTools 显示只有一个处于活动状态并接收消息。寻找有效订阅是另一个问题。
更新:感谢@Robert 的帮助。最后,我可以理解 getSubscriptions()[6] 包含我需要的内容。其他订阅更新页面中的时钟或其他内容。我从此订阅中提取的项目和字段如下:
var myItems = App.ls.getSubscriptions()[6].getItems();
var myFields = App.ls.getSubscriptions()[6].getFields();
var myEH3 = function ff(msg) {
console.log('tttt3');
};
var mySub = new Subscription("MERGE", myItems, myFields);
mySub.addListener(myEH3);
App.ls.subscribe(mySub);
但这不起作用。服务器返回错误“找不到数据适配器”。更改为 'mySub.addListener({ onItemUpdate: myEH3});'没有帮助。我已经尝试通过 'App.ls.getSubscriptions()[6].addListener({ onItemUpdate : myEH3});' 将事件处理程序直接添加到 getSubscriptions()[6],但我的函数从未调用过。任何提示将不胜感激。
【问题讨论】:
-
你的意思是非 sens 数组。你得到ItemUpdate。在这个实例上,你有一些方法,比如 forEachChangedField 和 getItem 名称。你必须找出一个女巫来获取你的数据。