typedsocket/test/test.ts

76 lines
2.3 KiB
TypeScript
Raw Permalink Normal View History

2023-08-04 14:22:39 +00:00
import { expect, tap } from '@push.rocks/tapbundle';
2023-08-05 10:00:27 +00:00
import * as typedrequest from '@api.global/typedrequest';
import * as typedrequestInterfaces from '@api.global/typedrequest-interfaces';
2022-03-24 21:46:08 +00:00
import * as typedsocket from '../ts/index.js';
2022-10-26 08:55:08 +00:00
interface IRequest_Client_Server
extends typedrequestInterfaces.implementsTR<
typedrequestInterfaces.ITypedRequest,
IRequest_Client_Server
> {
method: 'sayhi';
request: {
greeting: string;
};
response: {
2022-10-26 08:55:08 +00:00
answer: string;
};
}
let testTypedSocketServer: typedsocket.TypedSocket;
let testTypedSocketClient: typedsocket.TypedSocket;
2020-12-21 21:01:37 +00:00
const testTypedRouter = new typedrequest.TypedRouter();
2020-12-21 21:01:37 +00:00
tap.test('should add some handlers', async () => {
2022-10-26 08:55:08 +00:00
testTypedRouter.addTypedHandler<IRequest_Client_Server>(
new typedrequest.TypedHandler('sayhi', async (requestData) => {
return {
answer: `ok, got it : ${requestData.greeting}`,
};
})
);
});
2020-12-26 18:45:17 +00:00
tap.test('should create Server and Client', async (tools) => {
testTypedSocketServer = await typedsocket.TypedSocket.createServer(testTypedRouter);
2022-10-26 08:55:08 +00:00
testTypedSocketClient = await typedsocket.TypedSocket.createClient(
testTypedRouter,
'http://localhost:3000'
);
2021-10-22 22:27:46 +00:00
console.log('test: waiting 5 seconds');
await tools.delayFor(5000);
2021-07-20 00:04:45 +00:00
await testTypedSocketServer.stop();
2021-10-22 22:27:46 +00:00
// lets create another server
2021-07-20 00:04:45 +00:00
testTypedSocketServer = await typedsocket.TypedSocket.createServer(testTypedRouter);
2022-10-26 08:55:08 +00:00
2021-10-22 19:09:42 +00:00
// lets see if auto reconnect works
2022-01-19 18:17:22 +00:00
console.log('test: waiting 21 seconds for reconnect');
await tools.delayFor(21000);
2020-12-21 21:01:37 +00:00
});
2020-12-26 18:45:17 +00:00
tap.test('should process messages from both sides', async () => {
2022-10-26 08:55:08 +00:00
const myServerSideTypedRequest =
testTypedSocketServer.createTypedRequest<IRequest_Client_Server>('sayhi');
const myClientSideTypedRequest =
testTypedSocketClient.createTypedRequest<IRequest_Client_Server>('sayhi');
2020-12-26 18:45:17 +00:00
const response = await myClientSideTypedRequest.fire({
2022-10-26 08:55:08 +00:00
greeting: 'that is a greeting from the client',
2020-12-26 18:45:17 +00:00
});
console.log(response);
const response2 = await myServerSideTypedRequest.fire({
2022-10-26 08:55:08 +00:00
greeting: 'that is a greeting from the server',
2020-12-26 18:45:17 +00:00
});
console.log(response2);
2022-10-26 08:55:08 +00:00
});
2020-12-26 18:45:17 +00:00
2022-01-19 18:17:22 +00:00
tap.test('should disconnect', async (tools) => {
await testTypedSocketClient.stop();
await testTypedSocketServer.stop();
2022-01-20 16:44:50 +00:00
tools.delayFor(1000).then(() => process.exit(0));
2022-10-26 08:55:08 +00:00
});
2020-12-21 21:01:37 +00:00
tap.start();