@@ -22,7 +22,16 @@ export type MessageHandler = (
2222 message : MessagePayload ,
2323 connectionId : string ,
2424) => void ;
25+
2526export type ConnectionCallback = ( connectionId : string ) => void ;
27+
28+ export type ConnectionCloseCallback = (
29+ connectionId : string ,
30+ code ?: number ,
31+ reason ?: string ,
32+ wasClean ?: boolean ,
33+ ) => void ;
34+
2635export type ErrorCallback = ( error : Error , connectionId : string ) => void ;
2736export type ServerConnectionCallback = ( connectionId : string ) => void ;
2837export type Logger = ( message : string ) => void ;
@@ -33,7 +42,7 @@ class Synapse {
3342 private messageHandlers : Record < string , MessageHandler > = { } ;
3443 private connectionListeners = {
3544 onOpen : ( ( ) => { } ) as ConnectionCallback ,
36- onClose : ( ( ) => { } ) as ConnectionCallback ,
45+ onClose : ( ( ) => { } ) as ConnectionCloseCallback ,
3746 onError : ( ( ) => { } ) as ErrorCallback ,
3847 } ;
3948
@@ -112,8 +121,13 @@ class Synapse {
112121
113122 ws . onmessage = ( event ) => this . handleMessage ( event , connectionId ) ;
114123
115- ws . onclose = ( ) => {
116- this . connectionListeners . onClose ( connectionId ) ;
124+ ws . onclose = ( event ) => {
125+ this . connectionListeners . onClose (
126+ connectionId ,
127+ event . code ,
128+ event . reason ,
129+ event . wasClean ,
130+ ) ;
117131 this . attemptReconnect ( connectionId ) ;
118132 } ;
119133
@@ -440,10 +454,10 @@ class Synapse {
440454
441455 /**
442456 * Registers a callback for when a WebSocket connection is closed
443- * @param callback - Function to be called when connection closes
457+ * @param callback - Function to be called when connection closes. Receives (connectionId, code, reason)
444458 * @returns The Synapse instance for method chaining
445459 */
446- onClose ( callback : ConnectionCallback ) : Synapse {
460+ onClose ( callback : ConnectionCloseCallback ) : Synapse {
447461 this . connectionListeners . onClose = callback ;
448462 return this ;
449463 }
0 commit comments