在我的代码中,我希望从Feed中收到“订单”并将其存储在数据库中。
据我所知,每当收到数据时都会调用类方法marketEvent,因此我需要在此函数中使用insert语句。
每次调用类方法时打开和关闭数据库连接都是低效的,所以我试图打开连接并将db对象传递给marketEvent。
我是nodejs和web套接字的新手,所以无法弄清楚如何将它们组合在一起。
var pg = require("pg")
var conString = "postgres://myusername:mypassword@localhost/poloniex";
var client = new pg.Client(conString);
var autobahn = require('autobahn');
var wsuri = "wss://api.poloniex.com";
var connection = new autobahn.Connection({
url: wsuri,
realm: "realm1"
});
connection.onopen = function (session) {
function marketEvent (args,kwargs) {
client.query("INSERT INTO orderbook(order) values($1)", [args]);
}
session.subscribe('BTC_XMR', marketEvent);
}
connection.onclose = function () {
console.log("Websocket connection closed");
}
client.connect();
connection.open();
答案 0 :(得分:0)
我不知道" pg"和"高速公路"都。但是从" pg"的文档中可以看出来。包,我可以为您提供一些解决方案
client.connect()并不是一个孤立的电话。它希望函数委托执行操作。
connection.onopen = function (session) {
function marketEvent (args,kwargs) {
client.connect(function(err) {
if (err) throw err;
client.query("INSERT ...", [args]);
});
}
session.subscribe('BTC_XMR', marketEvent);
}
关于有效使用连接,我猜你可能要求汇集。
var pool = new pg.Pool(config);
pool.connect(function(err, client, done) {
if (err) throw err;
client.query('INSERT ...', function(err, result) {
//call `done()` to release the client back to the pool
done();
});
});
请参考此建议的原始来源以获取确切用法: https://www.npmjs.com/package/pg