Files
isotransport/test/test.node.ts
T

39 lines
1.1 KiB
TypeScript

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<isotransport.TIsotransportMessage>((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<isotransport.TIsotransportMessage>((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();