summary refs log tree commit diff
diff options
context:
space:
mode:
authorWlodekM <[email protected]>2024-12-01 11:53:15 +0200
committerWlodekM <[email protected]>2024-12-01 11:53:15 +0200
commit33055d0dfd1a8db661240b5e18e5463f7799e45f (patch)
treebcd95b9ea5937baecf5c7c89f62fca22105a1cd0
parent98c90a6dcf318461db492596f2d26bfad507151a (diff)
add ping and automated get response events to sdlib
-rw-r--r--lib/sd.js20
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