diff options
author | WlodekM <[email protected]> | 2024-12-01 11:53:15 +0200 |
---|---|---|
committer | WlodekM <[email protected]> | 2024-12-01 11:53:15 +0200 |
commit | 33055d0dfd1a8db661240b5e18e5463f7799e45f (patch) | |
tree | bcd95b9ea5937baecf5c7c89f62fca22105a1cd0 /lib | |
parent | 98c90a6dcf318461db492596f2d26bfad507151a (diff) |
add ping and automated get response events to sdlib
Diffstat (limited to 'lib')
-rw-r--r-- | lib/sd.js | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/lib/sd.js b/lib/sd.js index 69bd067..d8c461d 100644 --- a/lib/sd.js +++ b/lib/sd.js @@ -12,21 +12,27 @@ export default class SoktDeer { /** @type {any[]} */ messages = []; - constructor (wsUri="wss://sokt.meltland.dev") { + constructor(wsUri = "wss://sokt.meltland.dev") { this.ws = new WebSocket(wsUri); this.ws.onmessage = (rdata) => { const data = JSON.parse(rdata.data.toString()); console.info("SD", "INCOMING", data) - if ('token' in data) return this.wsEvents.emit('token', data.token); if ('command' in data) return this.wsEvents.emit(data.command, data); + if ('error' in data + && Object.keys(data).filter(k => !['error', 'code'].includes(k)).length > 0) + return this.wsEvents.emit( + Object.keys(data).filter(k => !['error', 'code'].includes(k))[0], + data + ) if ('error' in data) return this.wsEvents.emit('error', data); } this.wsEvents.on('greet', greetp => { this.messages = greetp.messages }) - this.wsEvents.on('new_post', ({data: post}) => { + this.wsEvents.on('new_post', ({ data: post }) => { this.messages.push(post) }) + setInterval(ping, 5000) } login(username, password) { return new Promise((resolve, reject) => { @@ -40,7 +46,7 @@ export default class SoktDeer { resolve(token) }) this.wsEvents.once('error', error => { - if(error.error) { + if (error.error) { reject(error.code) } }) @@ -53,9 +59,13 @@ export default class SoktDeer { token })) this.wsEvents.once('error', error => { - if(error.error) reject(error.code) + if (error.error) reject(error.code) else resolve() }) }) } + + ping() { + this.ws.send(JSON.stringify({ command: "ping" })) + } } \ No newline at end of file |