add interface to socket

This commit is contained in:
Peter Maquiran
2024-08-27 11:08:52 +01:00
parent 91a7e5f516
commit a8395b941e
4 changed files with 25 additions and 9 deletions
+13
View File
@@ -0,0 +1,13 @@
import { Observable, BehaviorSubject } from 'rxjs';
import { Result } from 'neverthrow';
import { HubConnection } from '@microsoft/signalr';
import { ISignalRInput } from './type';
export abstract class ISignalRService {
abstract establishConnection(): Promise<Result<HubConnection, false>>;
abstract sendData<T>(input: ISignalRInput): Promise<void>;
abstract join(): void;
abstract getData<T>(): Observable<{ method: string; data: T }>;
abstract getConnectionState(): Observable<boolean>;
abstract newConnection(): void;
}
@@ -9,17 +9,10 @@ import { Result } from 'neverthrow';
import { HubConnection } from '@microsoft/signalr'; import { HubConnection } from '@microsoft/signalr';
import { MessageOutPutDataDTO } from 'src/app/module/chat/data/dto/message/messageOutputDTO'; import { MessageOutPutDataDTO } from 'src/app/module/chat/data/dto/message/messageOutputDTO';
import { UserTypingDTO } from 'src/app/module/chat/data/dto/typing/typingInputDTO'; import { UserTypingDTO } from 'src/app/module/chat/data/dto/typing/typingInputDTO';
import { ISignalRInput } from '../type';
const { App } = Plugins; const { App } = Plugins;
const SignalRInputSchema = z.object({
method: z.string(),
data: z.object({
requestId: z.string(),
}).catchall(z.unknown()), // Allows any additional properties with unknown values
})
export type ISignalRInput = z.infer<typeof SignalRInputSchema>;
@Injectable({ @Injectable({
providedIn: 'root' providedIn: 'root'
+1 -1
View File
@@ -4,8 +4,8 @@ import { ok, Result, err } from 'neverthrow';
import { SessionStore } from 'src/app/store/session.service'; import { SessionStore } from 'src/app/store/session.service';
import { filter, first } from 'rxjs/operators'; import { filter, first } from 'rxjs/operators';
import { v4 as uuidv4 } from 'uuid' import { v4 as uuidv4 } from 'uuid'
import { ISignalRInput } from './signal-r.service';
import { MessageOutPutDataDTO } from 'src/app/module/chat/data/dto/message/messageOutputDTO'; import { MessageOutPutDataDTO } from 'src/app/module/chat/data/dto/message/messageOutputDTO';
import { ISignalRInput } from '../type';
export interface SocketMessage<T> { export interface SocketMessage<T> {
method: string, method: string,
+10
View File
@@ -0,0 +1,10 @@
import { z } from "zod";
const SignalRInputSchema = z.object({
method: z.string(),
data: z.object({
requestId: z.string(),
}).catchall(z.unknown()), // Allows any additional properties with unknown values
})
export type ISignalRInput = z.infer<typeof SignalRInputSchema>;