@@ -6,19 +6,27 @@ import yaml from 'js-yaml';
66 * Class representing a WebSocket connection.
77 */
88class cbws {
9- websocket : WebSocket ;
9+ private websocket : WebSocket | null = null ;
1010
1111 /**
1212 * Constructs a new cbws instance and initializes the WebSocket connection.
1313 */
14- constructor ( ) {
14+ async connect ( ) : Promise < WebSocket > {
15+ if ( this . websocket && this . websocket . readyState === WebSocket . OPEN ) {
16+ return this . websocket ;
17+ }
18+
1519 const uniqueConnectionId = this . getUniqueConnectionId ( ) ;
1620 const initialMessage = this . getInitialMessage ( ) ;
17- console . log ( uniqueConnectionId )
1821 this . websocket = new WebSocket ( `ws://localhost:${ process . env . SOCKET_PORT } /codebolt?id=${ uniqueConnectionId } ` ) ;
19- this . initializeWebSocket ( initialMessage ) . catch ( error => {
20- console . error ( "WebSocket connection failed:" , error ) ;
21- } ) ;
22+ return this . initializeWebSocket ( initialMessage ) ;
23+ }
24+
25+ async disconnect ( ) : Promise < void > {
26+ if ( this . websocket ) {
27+ this . websocket . close ( ) ;
28+ this . websocket = null ;
29+ }
2230 }
2331 private getUniqueConnectionId ( ) : string {
2432 try {
@@ -49,20 +57,18 @@ class cbws {
4957 */
5058 private async initializeWebSocket ( initialMessage : string ) : Promise < WebSocket > {
5159 return new Promise ( ( resolve , reject ) => {
60+ if ( ! this . websocket ) {
61+ reject ( new Error ( 'WebSocket is not initialized' ) ) ;
62+ return ;
63+ }
5264 this . websocket . on ( 'error' , ( error : Error ) => {
5365 console . log ( 'WebSocket error:' , error ) ;
5466 reject ( error ) ;
5567 } ) ;
5668
5769 this . websocket . on ( 'open' , ( ) => {
5870 console . log ( 'WebSocket connected' ) ;
59- // if (this.websocket) {
60- // this.websocket.send(JSON.stringify({
61- // "type": "sendMessage",
62- // "message": initialMessage
63- // }));
64- // resolve(this.websocket);
65- // }
71+ resolve ( this . websocket ! ) ;
6672 } ) ;
6773
6874 this . websocket . on ( 'message' , ( data : WebSocket . Data ) => {
@@ -77,13 +83,12 @@ class cbws {
7783 * @returns {WebSocket } The WebSocket instance.
7884 * @throws {Error } If the WebSocket is not open.
7985 */
80- get getWebsocket ( ) : WebSocket {
81- if ( ! this . websocket . OPEN ) {
86+ getWebsocket ( ) : WebSocket {
87+ if ( ! this . websocket || this . websocket . readyState !== WebSocket . OPEN ) {
8288 throw new Error ( 'WebSocket is not open' ) ;
83- } else {
84- return this . websocket ;
8589 }
90+ return this . websocket ;
8691 }
8792}
8893
89- export default new cbws ( ) ;
94+ export default cbws ;
0 commit comments