我正在使用angelbroking提供的smartapi。
我想做一个股票报价机,可以像这样显示股票的实时价格
我可以使用文档中提供的 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
方法有很多,这里有两种:
缓存最后一条消息+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 回调。
感谢大家对一个愚蠢的问题如此慷慨的回答。我什至没有学习后端的基础知识就在这里发布了这篇文章。
我太天真了,问我正在终端上记录数据,但我怎样才能在前端获取它,哈哈!
我想为印度股票创建一个股票市场行情代码组件,但找不到像雅虎财经这样的 API(雅虎财经只有美国股票)。
于是,我在网上搜索并找到了 Angel Broker,它提供了 API 来获取数据。
所以,我点击了 npm i smartapi-javascript
并认为一切都是正确的,为什么它不会出现在网页中。
那时候,根本不知道 DOM,只知道 HTML 和 CSS。
感谢您理解我的担忧并花时间详细回答我愚蠢的疑问