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



我使用的是angelbrooking提供的smartapi。

我想做一个股票行情器,可以显示股票的实时价格,比如这个

https://www.tickertape.in/screener?utm_source=gads&utm_medium=搜索&utm_campaign=screener&gclid=Cj0KCQiA8ICOBhDmARIsAEGI6o10xYgsbvDEB62OFTEYRP9e5UDnJxgCyBJJphdKTduZ_EOHCAchpoaAp-WEALw_wcB

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

如果您知道如何将json数据从nodejs控制台获取到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 repohttps://github.com/angelbroking-github/smartapi-javascript

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

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

缓存最后一条消息+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://ably.com/blog/web-app-websockets-nodejs

也只是一个简短的提示,在你的问题中,你说";。。。如何将json数据从nodejs控制台获取到html"。这类建议您将数据写入控制台,然后从控制台将其读取到html。这不是你应该考虑的方式。控制台是一个目的地,html是另一个,两者都源于websocket回调。

最新更新