簡體   English   中英

將事件處理程序添加到 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);

但這不起作用。 服務器返回錯誤“未找到數據適配器”。 更改為 'mySub.addListener({ onItemUpdate: myEH3});' 沒有幫助。 我已經嘗試通過“App.ls.getSubscriptions()[6].addListener({ onItemUpdate: myEH3});”將事件處理程序直接添加到 getSubscriptions()[6],但我的 function 從未調用過。 任何提示將不勝感激。

他們有教程和可靠的 api 文檔...... 來自

<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>  

現在您必須根據以下界面創建自己的訂閱監聽器。 然后您的訂閱偵聽器上有 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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM