const WebSocket = require('ws'); const ws = new WebSocket('ws://localhost:5000/ws'); var nonceCounter = 1; var nonceCallbacks = {}; // Setup ws.on('open', function open() { const packet = JSON.stringify({ username: "test-user", password: "123456" }); ws.send(packet); runTest(); }); ws.on('message', function incoming(rawMessage) { const parsed = JSON.parse(rawMessage); const callback = nonceCallbacks[parsed.nonce]; if (callback) { callback(parsed); } else { if (messageResolverQueue.length > 0) { const resolver = messageResolverQueue.shift(); resolver(parsed); } else { messageQueue.push(parsed); } console.log(parsed); } }); async function send (action, message) { const nonce = nonceCounter++; let promise = new Promise((resolve, reject) => { nonceCallbacks[nonce] = res => { if (res.error) reject(Error(res.error)); else resolve(res); };; }); const packet = JSON.stringify({ nonce, action, ...message }); ws.send(packet); return promise; } function waitMessage() { return new Promise((resolve) => { if (messageQueue.length > 0) { resolve(messageQueue.shift()); } else { messageResolverQueue.push(resolve); } }); } // Testing async function runTest() { console.log("Initial Chats", await send('get-chats') ); console.log("Create Agent", await send('create-agent', {body: { name: 'First Agent', description: 'First agent does nothing', kind: 'simple', data: {} }}) ); console.log("Get Agents", await send('get-agents') ); await testChats(); process.exit(); } async function testChats () { let response = await send('get-chats') let chat = response.chats[0]; let msgRes = await send('chat-send-message', { chatId: chat.id, content: "Hello World!", }); console.log('message sent', msgRes); let nextMessage = await waitMessage(); console.log('next incoming message', nextMessage); }