将事件处理程序添加到 LightStreamer
Add event handler to LightStreamer
我想抓取一个使用 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);
但这行不通。服务器 returns 错误 'Data Adapter Not found.' 更改为 'mySub.addListener({ onItemUpdate: myEH3});' 没有帮助。我已经尝试通过 'App.ls.getSubscriptions()[6].addListener({ onItemUpdate : myEH3});' 将事件处理程序直接添加到 getSubscriptions()[6],但我的函数从未调用过。任何提示将不胜感激。
他们有教程和可靠的 api 文档...
from
<script>
require(["LightstreamerClient", "Subscription", "StaticGrid"], function(LightstreamerClient, Subscription, StaticGrid) {
var client = new LightstreamerClient(null, "HELLOWORLD");
client.connect();
// you have to create your own SubscriptionListener
var grid = new StaticGrid("hellogrid", true);
var subscription = new Subscription("MERGE", grid.extractItemList(), grid.extractFieldList());
subscription.addListener(grid);
client.subscribe(subscription);
});
</script>
现在您必须根据follow接口创建自己的订阅监听器。然后你的订阅侦听器上有 onItemUpdate。
我终于可以了解这个图书馆了。搜索 JavaScript 个网页文件,我发现某处 DataAdapter 将设置为订阅。
这是我的最终代码:
var myItems = App.ls.getSubscriptions()[6].getItems();
var myFields = App.ls.getSubscriptions()[6].getFields();
var adaptername = App.ls.getSubscriptions()[6].getDataAdapter();
var myEH3 = function ff(msg) {
console.log('message received.');
};
var mySub = new Subscription("MERGE", myItems, myFields);
mySub.setDataAdapter(adaptername);
mySub.setRequestedSnapshot("yes");
mySub.addListener({onItemUpdate: myEH3});
App.ls.subscribe(mySub);
我想抓取一个使用 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);
但这行不通。服务器 returns 错误 'Data Adapter Not found.' 更改为 'mySub.addListener({ onItemUpdate: myEH3});' 没有帮助。我已经尝试通过 'App.ls.getSubscriptions()[6].addListener({ onItemUpdate : myEH3});' 将事件处理程序直接添加到 getSubscriptions()[6],但我的函数从未调用过。任何提示将不胜感激。
他们有教程和可靠的 api 文档... from
<script>
require(["LightstreamerClient", "Subscription", "StaticGrid"], function(LightstreamerClient, Subscription, StaticGrid) {
var client = new LightstreamerClient(null, "HELLOWORLD");
client.connect();
// you have to create your own SubscriptionListener
var grid = new StaticGrid("hellogrid", true);
var subscription = new Subscription("MERGE", grid.extractItemList(), grid.extractFieldList());
subscription.addListener(grid);
client.subscribe(subscription);
});
</script>
现在您必须根据follow接口创建自己的订阅监听器。然后你的订阅侦听器上有 onItemUpdate。
我终于可以了解这个图书馆了。搜索 JavaScript 个网页文件,我发现某处 DataAdapter 将设置为订阅。
这是我的最终代码:
var myItems = App.ls.getSubscriptions()[6].getItems();
var myFields = App.ls.getSubscriptions()[6].getFields();
var adaptername = App.ls.getSubscriptions()[6].getDataAdapter();
var myEH3 = function ff(msg) {
console.log('message received.');
};
var mySub = new Subscription("MERGE", myItems, myFields);
mySub.setDataAdapter(adaptername);
mySub.setRequestedSnapshot("yes");
mySub.addListener({onItemUpdate: myEH3});
App.ls.subscribe(mySub);