import { expect, tap } from '@git.zone/tstest/tapbundle'; import * as isotransport from '../ts/index.js'; tap.test('should exchange messages over a WebSocket transport', async () => { const port = 32000 + Math.floor(Math.random() * 10000); const server = new isotransport.IsotransportServer({ port, host: '127.0.0.1' }); const serverMessagePromise = new Promise((resolve) => { server.on('connection', (connectionArg) => { connectionArg.on('message', (messageArg) => { resolve(messageArg); connectionArg.send('pong'); }); }); }); await server.listen(); const client = new isotransport.IsotransportClient({ url: `ws://127.0.0.1:${port}`, }); try { const clientMessagePromise = new Promise((resolve) => { client.on('message', resolve); }); await client.connect(); client.send('ping'); expect(await serverMessagePromise).toEqual('ping'); expect(await clientMessagePromise).toEqual('pong'); } finally { client.close(); await server.close(); } }); export default tap.start();