如何将nodejs控制台中的数据获取到html

问题描述 投票:0回答:2

我正在使用angelbroking提供的smartapi。

我想做一个股票报价机,可以像这样显示股票的实时价格

https://www.tickertape.in/screener?utm_source=gads&utm_medium=search&utm_campaign=screener&gcl id=Cj0KCQiA8ICOBhDmARIsAEGI6o1xfYgsbvDEB6c2OFTEYRp9e5UDnJxgCyBJJphdKTduZ_EOHCAchpoaAp-WEALw_wcB

我可以使用文档中提供的 sdk 连接到 websocket,但我不知道如何在我的 html 页面中显示该数据。

如果您知道如何从nodejs控制台获取json数据到html,请提出建议。

nodejs代码是

let { SmartAPI, WebSocket } = require("smartapi-javascript");


let web_socket = new WebSocket({
    client_code: "P529774",
    feed_token: "0973308957"
});

web_socket.connect()
    .then(() => {
        web_socket.runScript("nse_cm|2885", "cn") // SCRIPT: nse_cm|2885, mcx_fo|222900  TASK: mw|sfi|dp
        web_socket.runScript("nse_cm|2885", "mw")
            /*setTimeout(function() {
                web_socket.close()
            }, 60000)*/
    })

web_socket.on('tick', receiveTick)


function receiveTick(data) {
    console.log("receiveTick:::::", data)
}

我得到的回复与此类似:

[{"ak":"ok","task":"mw","msg":"mw"}]
 [{"lo":"1797.55","ts":"ACC-EQ","tp":null,"ltp":"1800.05","ltq":"27","bs":"16","tk":"22","ltt":"31\/08\/2017 11:32:01",
 "lcl":null,"tsq":"76435","cng":"-11.15","bp":"1800.00","bq":"510","mc":"34012.01277(Crs)","isdc":"18.77872
 (Crs)","name":"sf","tbq":"76497","oi":null,"yh":"1801.25","e":"nse_cm","sp":"1800.90","op":"1814.00","c": "1811.20",
 "to":"145093696.35","ut":"31-Aug-2017 11:32:01","h":"1817.55","v":"80391","nc":"- 00.62","ap":"1804.85","yl":"1800.00","ucl":null,"toi":"16654000" }]

smartapi Nodejs 的 github 存储库 https://github.com/angelbroking-github/smartapi-javascript

API 文档 https://smartapi.angelbroking.com/docs/Introduction

node.js api pug backend
2个回答
0
投票

方法有很多,这里有两种:

缓存最后一条消息+HTTP轮询

这不是最有效的解决方案,但也许是最简单的。每次您的 receiveTick() 回调命中时,您可以将响应消息保存在全局对象/集合中(缓存它)。更好的是,您可以预处理消息,因此只需在全局集合中缓存您真正关心的任何信息,并节省前端 HTML 和后端之间的连接带宽。

然后,将 HTTP 端点添加到后端,以提供与给定代码相关的最后信息。您可以使用 Express.js 或其他一些简单的 HTTP 服务器库。这样当你的前端调用时

http://<backend_host>:<backend_port>/tickers/<ticker>

您的后端将从缓存的数据中读取并提供所需的数据。

创建自己的websocket并转发数据

这是一个更好的解决方案,特别是如果您的数据提供商 API 具有快速(亚秒)刷新率。创建您自己的 websocket 服务器,它将与您的前端建立 websocket 连接。然后,当您从数据提供者 websocket 收到消息时,只需以您想要的任何方式处理它(将其转换为您的前端想要的格式),然后使用您的 websocket 服务器将其转发到前端。这也将在 receiveTick() 函数中完成。

nodejs 有很多 websocket 工具。如需有关 websocket 的帮助,请查看此内容 https://abilly.com/blog/web-app-websockets-nodejs

还有一个简短的说明,在你的问题中你说“......如何从nodejs控制台获取json数据到html”。这种情况表明你想将数据写入控制台,然后从控制台读取到html。这不是你应该思考的方式。控制台是一个目的地,html 是另一个目的地,两者都源自 websocket 回调。


0
投票

感谢大家对一个愚蠢的问题如此慷慨的回答。我什至没有学习后端的基础知识就在这里发布了这篇文章。

我太天真了,问我正在终端上记录数据,但我怎样才能在前端获取它,哈哈!

我想为印度股票创建一个股票市场行情代码组件,但找不到像雅虎财经这样的 API(雅虎财经只有美国股票)。

于是,我在网上搜索并找到了 Angel Broker,它提供了 API 来获取数据。

所以,我点击了 npm i smartapi-javascript

并认为一切都是正确的,为什么它不会出现在网页中。

那时候,根本不知道 DOM,只知道 HTML 和 CSS。

感谢您理解我的担忧并花时间详细回答我愚蠢的疑问

© www.soinside.com 2019 - 2024. All rights reserved.