import { PointInterface } from "./PointInterface"; import { Identificable } from "./Identificable"; import { ViewportInterface } from "_Model/Websocket/ViewportMessage"; import { BatchMessage, CompanionMessage, PusherToBackMessage, ServerToClientMessage, SubMessage, } from "../../Messages/generated/messages_pb"; import { WebSocket } from "uWebSockets.js"; import { ClientDuplexStream } from "grpc"; import { Zone } from "_Model/Zone"; import { CharacterTexture } from "../../Services/AdminApi/CharacterTexture"; export type BackConnection = ClientDuplexStream; export interface CharacterLayer { name: string; url: string | undefined; } export interface ExSocketInterface extends WebSocket, Identificable { token: string; roomId: string; //userId: number; // A temporary (autoincremented) identifier for this user userUuid: string; // A unique identifier for this user IPAddress: string; // IP address name: string; characterLayers: CharacterLayer[]; position: PointInterface; viewport: ViewportInterface; companion?: CompanionMessage; /** * Pushes an event that will be sent in the next batch of events */ emitInBatch: (payload: SubMessage) => void; batchedMessages: BatchMessage; batchTimeout: NodeJS.Timeout | null; disconnecting: boolean; messages: unknown; tags: string[]; visitCardUrl: string | null; textures: CharacterTexture[]; backConnection: BackConnection; listenedZones: Set; userRoomToken: string | undefined; }