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,4 +1,5 @@
|
||||
import * as plugins from './smartsocket.plugins.js';
|
||||
import * as interfaces from './interfaces/index.js';
|
||||
|
||||
// import interfaces
|
||||
import {
|
||||
@@ -78,11 +79,15 @@ export class SocketRequest<T extends plugins.typedrequestInterfaces.ITypedReques
|
||||
* dispatches a socketrequest from the requesting to the receiving side
|
||||
*/
|
||||
public dispatch(): Promise<ISocketFunctionCallDataResponse<T>> {
|
||||
const requestData: ISocketRequestDataObject<T> = {
|
||||
funcCallData: this.funcCallData,
|
||||
shortId: this.shortid,
|
||||
const message: interfaces.ISocketMessage<interfaces.IFunctionCallPayload> = {
|
||||
type: 'function',
|
||||
id: this.shortid,
|
||||
payload: {
|
||||
funcName: this.funcCallData.funcName,
|
||||
funcData: this.funcCallData.funcDataArg,
|
||||
},
|
||||
};
|
||||
this.originSocketConnection.socket.emit('function', requestData);
|
||||
this.originSocketConnection.sendMessage(message);
|
||||
return this.done.promise;
|
||||
}
|
||||
|
||||
@@ -90,7 +95,6 @@ export class SocketRequest<T extends plugins.typedrequestInterfaces.ITypedReques
|
||||
* handles the response that is received by the requesting side
|
||||
*/
|
||||
public async handleResponse(responseDataArg: ISocketRequestDataObject<T>) {
|
||||
// logger.log('info', 'handling response!');
|
||||
this.done.resolve(responseDataArg.funcCallData);
|
||||
this.smartsocketRef.socketRequests.remove(this);
|
||||
}
|
||||
@@ -110,16 +114,19 @@ export class SocketRequest<T extends plugins.typedrequestInterfaces.ITypedReques
|
||||
logger.log('error', `There is no SocketFunction defined for ${this.funcCallData.funcName}`);
|
||||
return;
|
||||
}
|
||||
// logger.log('info', `invoking ${targetSocketFunction.name}`);
|
||||
|
||||
targetSocketFunction
|
||||
.invoke(this.funcCallData, this.originSocketConnection)
|
||||
.then((resultData) => {
|
||||
// logger.log('info', 'got resultData. Sending it to requesting party.');
|
||||
const responseData: ISocketRequestDataObject<T> = {
|
||||
funcCallData: resultData,
|
||||
shortId: this.shortid,
|
||||
const message: interfaces.ISocketMessage<interfaces.IFunctionCallPayload> = {
|
||||
type: 'functionResponse',
|
||||
id: this.shortid,
|
||||
payload: {
|
||||
funcName: resultData.funcName,
|
||||
funcData: resultData.funcDataArg,
|
||||
},
|
||||
};
|
||||
this.originSocketConnection.socket.emit('functionResponse', responseData);
|
||||
this.originSocketConnection.sendMessage(message);
|
||||
this.smartsocketRef.socketRequests.remove(this);
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user