@tdengine/websocket
Version:
The websocket Node.js connector for TDengine. TDengine versions 3.3.2.0 and above are recommended to use this connector.
81 lines (80 loc) • 3.38 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
const constant_1 = require("../../src/tmq/constant");
const wsTmq_1 = require("../../src/tmq/wsTmq");
const wsConnectorPool_1 = require("../../src/client/wsConnectorPool");
const log_1 = require("../../src/common/log");
const config_1 = require("../../src/common/config");
const wsSql_1 = require("../../src/sql/wsSql");
beforeAll(async () => {
const url = `wss://${process.env.TDENGINE_CLOUD_URL}?token=${process.env.TDENGINE_CLOUD_TOKEN}`;
let wsSql = null;
try {
const conf = new config_1.WSConfig(url);
conf.setUser('root');
conf.setPwd('taosdata');
wsSql = await wsSql_1.WsSql.open(conf);
let sql = `INSERT INTO dmeters.d1001 USING dmeters.meters (groupid, location) TAGS(2, 'SanFrancisco')
VALUES (NOW + 1a, 10.30000, 219, 0.31000) (NOW + 2a, 12.60000, 218, 0.33000) (NOW + 3a, 12.30000, 221, 0.31000)
dmeters.d1002 USING dmeters.meters (groupid, location) TAGS(3, 'SanFrancisco')
VALUES (NOW + 1a, 10.30000, 218, 0.25000)`;
let res = await wsSql.exec(sql);
console.log(res);
expect(res.getAffectRows()).toBeGreaterThanOrEqual(3);
}
catch (err) {
throw err;
}
finally {
if (wsSql) {
await wsSql.close();
}
}
});
describe('TDWebSocket.Tmq()', () => {
jest.setTimeout(20 * 1000);
test('normal connect', async () => {
const url = `wss://${process.env.TDENGINE_CLOUD_URL}?token=${process.env.TDENGINE_CLOUD_TOKEN}`;
// const TDENGINE_CLOUD_URL = 'wss://gw.cloud.taosdata.com?token=1eb78307be0681ac2fc07c2817ba8a9719641fb9';
const topic = 'topic_meters';
const topics = [topic];
const groupId = 'group1';
const clientId = 'client1';
let configMap = new Map([
[constant_1.TMQConstants.GROUP_ID, groupId],
[constant_1.TMQConstants.CLIENT_ID, clientId],
[constant_1.TMQConstants.AUTO_OFFSET_RESET, 'earliest'],
[constant_1.TMQConstants.WS_URL, url],
[constant_1.TMQConstants.ENABLE_AUTO_COMMIT, 'true'],
[constant_1.TMQConstants.AUTO_COMMIT_INTERVAL_MS, '1000'],
]);
(0, log_1.setLevel)("debug");
// create consumer
let consumer = await wsTmq_1.WsConsumer.newConsumer(configMap);
console.log(`Create consumer successfully, host: ${url}, groupId: ${groupId}, clientId: ${clientId}`);
// subscribe
await consumer.subscribe(topics);
console.log(`Subscribe topics successfully, topics: ${topics}`);
let res = new Map();
while (res.size == 0) {
// poll
res = await consumer.poll(1000);
for (let [key, value] of res) {
// Add your data processing logic here
console.log(`data: ${key} ${value}`);
}
// commit
await consumer.commit();
}
// seek
let assignment = await consumer.assignment();
await consumer.seekToBeginning(assignment);
console.log('Assignment seek to beginning successfully');
// clean
await consumer.unsubscribe();
await consumer.close();
});
});
afterAll(async () => {
wsConnectorPool_1.WebSocketConnectionPool.instance().destroyed();
});
;