UNPKG

@foxglove/ws-protocol-examples

Version:

Foxglove WebSocket protocol examples

262 lines 7.13 kB
export declare enum BinaryOpcode { MESSAGE_DATA = 1, TIME = 2, SERVICE_CALL_RESPONSE = 3, FETCH_ASSET_RESPONSE = 4 } export declare enum ClientBinaryOpcode { MESSAGE_DATA = 1, SERVICE_CALL_REQUEST = 2 } export declare enum StatusLevel { INFO = 0, WARNING = 1, ERROR = 2 } export declare enum ServerCapability { clientPublish = "clientPublish", time = "time", parameters = "parameters", parametersSubscribe = "parametersSubscribe", services = "services", connectionGraph = "connectionGraph", assets = "assets" } export declare enum FetchAssetStatus { SUCCESS = 0, ERROR = 1 } export type ChannelId = number; export type ClientChannelId = number; export type SubscriptionId = number; export type ServiceId = number; export type Channel = { id: ChannelId; topic: string; encoding: string; schemaName: string; schema: string; schemaEncoding?: string; }; type ServiceRequestDefinition = { encoding: string; schemaName: string; schemaEncoding: string; schema: string; }; type ServiceResponseDefinition = ServiceRequestDefinition; export type Service = { id: number; name: string; type: string; request?: ServiceRequestDefinition; response?: ServiceResponseDefinition; /** * Must be given if request is not given. * @deprecated Use request instead. */ requestSchema?: string; /** * Must be given if response is not given. * @deprecated Use response instead. */ responseSchema?: string; }; export type Subscribe = { op: "subscribe"; subscriptions: Array<{ id: SubscriptionId; channelId: ChannelId; }>; }; export type Unsubscribe = { op: "unsubscribe"; subscriptionIds: SubscriptionId[]; }; type ClientChannelSchemaInfo = { schema: string; schemaEncoding: string; } | { schema?: undefined; schemaEncoding?: undefined; }; type ClientChannelBase = { id: ClientChannelId; topic: string; encoding: string; schemaName: string; }; export type ClientChannel = ClientChannelBase & ClientChannelSchemaInfo; export type ClientChannelWithoutId = Omit<ClientChannelBase, "id"> & ClientChannelSchemaInfo; export type ClientAdvertise = { op: "advertise"; channels: ClientChannel[]; }; export type ClientUnadvertise = { op: "unadvertise"; channelIds: ClientChannelId[]; }; export type ClientMessageData = { op: ClientBinaryOpcode.MESSAGE_DATA; channelId: ClientChannelId; data: ArrayBufferView; }; export type ServiceCallPayload = { serviceId: ServiceId; callId: number; encoding: string; data: ArrayBufferView; }; export type ServiceCallRequest = ServiceCallPayload & { op: ClientBinaryOpcode.SERVICE_CALL_REQUEST; }; export type ClientMessage = Subscribe | Unsubscribe | ClientAdvertise | ClientUnadvertise | GetParameters | SetParameters | SubscribeParameterUpdates | UnsubscribeParameterUpdates | ClientMessageData | ServiceCallRequest | SubscribeConnectionGraph | UnsubscribeConnectionGraph | FetchAsset; export type ServerInfo = { op: "serverInfo"; name: string; capabilities: string[]; supportedEncodings?: string[]; metadata?: Record<string, string>; sessionId?: string; }; export type StatusMessage = { op: "status"; level: StatusLevel; message: string; id?: string; }; export type RemoveStatusMessages = { op: "removeStatus"; statusIds: string[]; }; export type Advertise = { op: "advertise"; channels: Channel[]; }; export type Unadvertise = { op: "unadvertise"; channelIds: ChannelId[]; }; export type ParameterValues = { op: "parameterValues"; parameters: Parameter[]; id?: string; }; export type GetParameters = { op: "getParameters"; parameterNames: string[]; id?: string; }; export type SetParameters = { op: "setParameters"; parameters: Parameter[]; id?: string; }; export type SubscribeParameterUpdates = { op: "subscribeParameterUpdates"; parameterNames: string[]; }; export type UnsubscribeParameterUpdates = { op: "unsubscribeParameterUpdates"; parameterNames: string[]; }; export type AdvertiseServices = { op: "advertiseServices"; services: Service[]; }; export type UnadvertiseServices = { op: "unadvertiseServices"; serviceIds: ServiceId[]; }; export type SubscribeConnectionGraph = { op: "subscribeConnectionGraph"; }; export type UnsubscribeConnectionGraph = { op: "unsubscribeConnectionGraph"; }; export type FetchAsset = { op: "fetchAsset"; uri: string; requestId: number; }; export type ConnectionGraphUpdate = { op: "connectionGraphUpdate"; publishedTopics: { name: string; publisherIds: string[]; }[]; subscribedTopics: { name: string; subscriberIds: string[]; }[]; advertisedServices: { name: string; providerIds: string[]; }[]; removedTopics: string[]; removedServices: string[]; }; export type MessageData = { op: BinaryOpcode.MESSAGE_DATA; subscriptionId: SubscriptionId; timestamp: bigint; data: ArrayBufferView; }; export type Time = { op: BinaryOpcode.TIME; timestamp: bigint; }; export type ServiceCallResponse = ServiceCallPayload & { op: BinaryOpcode.SERVICE_CALL_RESPONSE; }; export type FetchAssetSuccessResponse = { op: BinaryOpcode.FETCH_ASSET_RESPONSE; requestId: number; status: FetchAssetStatus.SUCCESS; data: ArrayBufferView; }; export type FetchAssetErrorResponse = { op: BinaryOpcode.FETCH_ASSET_RESPONSE; requestId: number; status: FetchAssetStatus.ERROR; error: string; }; export type FetchAssetResponse = FetchAssetSuccessResponse | FetchAssetErrorResponse; export type ServiceCallFailure = { op: "serviceCallFailure"; serviceId: number; callId: number; message: string; }; export type ClientPublish = { channel: ClientChannel; data: ArrayBufferView; }; export type ParameterValue = undefined | number | boolean | string | { [key: string]: ParameterValue; } | ParameterValue[]; export type Parameter = { name: string; value: ParameterValue; type?: "byte_array" | "float64" | "float64_array"; }; export type ServerMessage = ServerInfo | StatusMessage | RemoveStatusMessages | Advertise | Unadvertise | AdvertiseServices | UnadvertiseServices | MessageData | Time | ServiceCallResponse | ParameterValues | ConnectionGraphUpdate | FetchAssetResponse | ServiceCallFailure; /** * Abstraction that supports both browser and Node WebSocket clients. */ export interface IWebSocket { binaryType: string; protocol: string; onerror: ((event: any) => void) | null | undefined; onopen: ((event: any) => void) | null | undefined; onclose: ((event: any) => void) | null | undefined; onmessage: ((event: any) => void) | null | undefined; close(): void; send(data: string | ArrayBuffer | ArrayBufferView, /** Options available in Node "ws" library */ options?: { fin?: boolean; }): void; } export {}; //# sourceMappingURL=types.d.ts.map