Refactor smartsocket implementation for improved WebSocket handling and message protocol
- Updated test files to use new testing library and reduced test cycles for efficiency. - Removed dependency on smartexpress and integrated direct WebSocket handling. - Enhanced Smartsocket and SmartsocketClient classes to support new message types and authentication flow. - Implemented a new message interface for structured communication between client and server. - Added external server support for smartserve with appropriate WebSocket hooks. - Improved connection management and error handling in SocketConnection and SocketRequest classes. - Cleaned up code and removed deprecated socket.io references in favor of native WebSocket.
This commit is contained in:
@@ -1,2 +1,3 @@
|
||||
export * from './connection.js';
|
||||
export * from './tag.js';
|
||||
export * from './message.js';
|
||||
|
||||
67
ts/interfaces/message.ts
Normal file
67
ts/interfaces/message.ts
Normal file
@@ -0,0 +1,67 @@
|
||||
/**
|
||||
* Message types for the smartsocket protocol
|
||||
*/
|
||||
export type TMessageType =
|
||||
| 'authRequest' // Server requests authentication from client
|
||||
| 'auth' // Client provides authentication data
|
||||
| 'authResponse' // Server responds to authentication
|
||||
| 'serverReady' // Server signals it's fully ready
|
||||
| 'function' // Function call request
|
||||
| 'functionResponse' // Function call response
|
||||
| 'tagUpdate'; // Tag store synchronization
|
||||
|
||||
/**
|
||||
* Base message interface for all smartsocket messages
|
||||
*/
|
||||
export interface ISocketMessage<T = any> {
|
||||
type: TMessageType;
|
||||
id?: string; // For request/response correlation
|
||||
payload: T;
|
||||
}
|
||||
|
||||
/**
|
||||
* Authentication request payload (server -> client)
|
||||
*/
|
||||
export interface IAuthRequestPayload {
|
||||
serverAlias: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* Authentication data payload (client -> server)
|
||||
*/
|
||||
export interface IAuthPayload {
|
||||
alias: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* Authentication response payload (server -> client)
|
||||
*/
|
||||
export interface IAuthResponsePayload {
|
||||
success: boolean;
|
||||
error?: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* Function call payload
|
||||
*/
|
||||
export interface IFunctionCallPayload {
|
||||
funcName: string;
|
||||
funcData: any;
|
||||
}
|
||||
|
||||
/**
|
||||
* Tag update payload
|
||||
*/
|
||||
export interface ITagUpdatePayload {
|
||||
tags: { [key: string]: any };
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper type for creating typed messages
|
||||
*/
|
||||
export type TAuthRequestMessage = ISocketMessage<IAuthRequestPayload>;
|
||||
export type TAuthMessage = ISocketMessage<IAuthPayload>;
|
||||
export type TAuthResponseMessage = ISocketMessage<IAuthResponsePayload>;
|
||||
export type TFunctionMessage = ISocketMessage<IFunctionCallPayload>;
|
||||
export type TFunctionResponseMessage = ISocketMessage<IFunctionCallPayload>;
|
||||
export type TTagUpdateMessage = ISocketMessage<ITagUpdatePayload>;
|
||||
Reference in New Issue
Block a user