国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

火幣 websocket 獲取 k 線數據,和其它數據 API

KunMinX / 3445人閱讀

摘要:但,在這個期間,還有一個動作需要執行,火幣服務器會每隔秒,向客戶端發送一條數據,客戶端接收到這種信息的時候,需要一條對應的數據,內容是的數據體相應的數據格式如下,如果服務器在發送兩條數據后沒有收到客戶端返回的數據,火幣服務器就會關閉連接。

火幣 websocket 獲取 k 線數據,和其它數據 API
火幣官方文檔地址: https://huobiapi.github.io/do...
pako(解壓gzip): https://github.com/nodeca/pako
參考鏈接(地址可能已過時,但內容沒有): https://www.cnblogs.com/zhumi...

坑死,接火幣 websocket 地址 wss://api.huobi.pro/ws 的時候接到懷疑人生,怎么都無法建立連接,一度以為自己沒有像其它 get/post 接口那樣傳入該傳的參數,又以為是 wss 走的是 SSL 通道,所以才沒能建立連接,還以為是需要服務端轉接一下。

但,最后的最后,竟然發現是因為地址的問題,這個地址根本接入不了,至少我這邊是接入不進去。

后來換這個地址: wss://api.hadax.com/ws就順利的接入了

火幣 websocket 規則

先建立連接

客戶端發送訂閱請求,這個官方文檔有說明

火幣服務器返回訂閱成功與否的回饋信息

如果成功就定時發送 gzip 壓縮后的數據,解壓 gzip 你需要 pako https://github.com/nodeca/pako

我們自己客戶端這邊接收數據,并解壓數據,才能獲取到真正的 json 數據

自己做前端該做的相應操作,壓入數據,展示數據什么的。

但,在這個期間,還有一個動作需要執行,火幣服務器會每隔 5 秒,向客戶端發送一條 ping 數據,客戶端接收到這種信息的時候,需要 send 一條對應的 pong 數據,內容是 ping 的數據體(相應的數據格式如下),如果服務器在發送兩條 ping 數據后沒有收到 客戶端返回的 pong 數據,火幣服務器就會關閉連接。

關于其它信息的獲取,查看官方文檔關于 websocket 的說明就可以了。

// 服務器發送的 ping 數據
{ ping: 1562741680416 }

// 客戶端返回服務器的 pong 數據
{ pong: 1562741680416 }
執行代碼
// K 線相關
let hburl = "wss://api.huobipro.com/ws";  // 實時幣種價格
let haurl = "wss://api.hadax.com/ws";


let requestK = { // 請求對應信息的數據
    req: "market.bchusdt.kline.1min",
    id: "bchusdt",
    from: Math.round(new Date().getTime()/1000) - 60,
    to: Math.round(new Date().getTime()/1000)
};

let subK = { // 訂閱數據
    sub: "market.bchusdt.kline.1min",
    id: "bchusdt"
};

let socketK = new WebSocket(haurl);
socketK.onopen = function () {
    console.log("connection establish");
    socketK.send(JSON.stringify(subK));
    socketK.send(JSON.stringify(requestK));
};
socketK.onmessage = function (event) {
    let blob = event.data;
    let reader = new FileReader();
    reader.onload = function (e) {
        let ploydata = new Uint8Array(e.target.result);
        let msg = pako.inflate(ploydata, {to: "string"});
        handleData(msg);
    };
    reader.readAsArrayBuffer(blob, "utf-8");
};
socketK.onclose = function () {
    console.log("connection closed");
};

// 處理接收到的信息
function handleData(msg) {
    let data = JSON.parse(msg);
    if (data.ping) {
        // 如果是 ping 消息
        sendHeartMessage(data.ping);
    } else if (data.status === "ok") {
        // 響應數據
        handleReponseData(data);
    } else {
        // 數據體
        console.log(data)
    }
}

// 發送響應信息
function sendHeartMessage(ping) {
    socketK.send(JSON.stringify({"pong": ping}));
}

function handleReponseData(data) {
}

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/105527.html

相關文章

  • 雜談:前端Web通信

    摘要:作為開發同學的小伙伴客戶端的瀏覽器,有點小調皮還做了一個同源策略的限制,當我們的數據請求遇到不同源的情況下跨域,我們就得嘗試其它的通信方法,不能一條道走到黑。 showImg(https://segmentfault.com/img/bVburZO?w=600&h=450); Web2.0以來,Ajax的出世,解決了傳統表單提交頁面跳轉,閃爍白屏等問題。使得Web頁面可以實現局部更新,...

    Betta 評論0 收藏0
  • html基礎

    摘要:不存在或格式不正確會導致文檔以兼容模式呈現標準模式的排版和運作模式都是以該瀏覽器支持的最高標準運行。如果不能確定時,首選使用自然樣式標簽 HTML 語義化 HTML標簽的語義化是指:通過使用包含語義的標簽(如h1-h6)恰當地表示文檔結構 css命名的語義化是指:為html標簽添加有意義的class 為什么需要語義化: 去掉樣式后頁面呈現清晰的結構 盲人使用讀屏器更好地閱讀 搜...

    sihai 評論0 收藏0
  • InChat一版,僅僅兩個接口實現自己的IM系統(可兼容)

    摘要:大家明天一起去唱吧關于數據庫設計當前一版不會固定大家的數據庫設計,大家可以自己自由設計,同時搭上自己的項目,構建一個附帶的自項目。 InChat 一個IM通訊框架 一個輕量級、高效率的支持多端(應用與硬件Iot)的異步網絡應用通訊框架。(核心底層Netty) Github:InChat 版本目標:完成基本的消息通訊(僅支持文本消息),離線消息存儲,歷史消息查詢,一對一聊天、自我聊天、群...

    CrazyCodes 評論0 收藏0

發表評論

0條評論

KunMinX

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<