@@ -103,12 +103,12 @@ export function createWebXdc(
103
103
const webXdc : Webxdc < any > = {
104
104
sendUpdate : ( update ) => {
105
105
transport . send ( { type : "sendUpdate" , update } ) ;
106
- log ( "send" , { update } ) ;
106
+ log ( "send update " , { update } ) ;
107
107
} ,
108
108
setUpdateListener : ( listener , serial = 0 ) : Promise < void > => {
109
109
transport . onMessage ( ( message ) => {
110
110
if ( isUpdatesMessage ( message ) ) {
111
- log ( "recv" , message . updates ) ;
111
+ log ( "recv update " , message . updates ) ;
112
112
for ( const update of message . updates ) {
113
113
listener ( update ) ;
114
114
}
@@ -263,20 +263,33 @@ export function createWebXdc(
263
263
}
264
264
} )
265
265
}
266
+ let should_create = false
266
267
realtime = new RealtimeListener (
267
268
( ) => { } ,
268
269
( ) => {
269
- transport . send ( { type : "setRealtimeListener" } ) ;
270
+ should_create = true
270
271
} ,
271
272
( ) => {
272
- realtime = null ;
273
+ should_create = false
274
+ realtime = null
273
275
} ,
274
276
) ;
275
277
transport . onConnect ( ( ) => {
276
- realtime ! . sendHook = ( data ) => {
278
+ if ( ! realtime ) {
279
+ return
280
+ }
281
+
282
+ if ( should_create ) {
283
+ transport . send ( { type : "setRealtimeListener" } ) ;
284
+ }
285
+
286
+ realtime . sendHook = ( data ) => {
277
287
transport . send ( { type : "sendRealtime" , data } ) ;
278
288
log ( "send realtime" , { data } ) ;
279
289
} ;
290
+ realtime . setListenerHook = ( ) => {
291
+ transport . send ( { type : "setRealtimeListener" } ) ;
292
+ }
280
293
} ) ;
281
294
return realtime ;
282
295
} ,
0 commit comments