@@ -541,14 +541,16 @@ async def _race_with_page_close(self, future: Coroutine) -> None:
541541 await asyncio .gather (fut , return_exceptions = True )
542542
543543
544- def _create_task_and_ignore_exception (coro : Coroutine ) -> None :
544+ def _create_task_and_ignore_exception (
545+ loop : asyncio .AbstractEventLoop , coro : Coroutine
546+ ) -> None :
545547 async def _ignore_exception () -> None :
546548 try :
547549 await coro
548550 except Exception :
549551 pass
550552
551- asyncio .create_task (_ignore_exception ())
553+ loop .create_task (_ignore_exception ())
552554
553555
554556class ServerWebSocketRoute :
@@ -572,29 +574,32 @@ def url(self) -> str:
572574
573575 def close (self , code : int = None , reason : str = None ) -> None :
574576 _create_task_and_ignore_exception (
577+ self ._ws ._loop ,
575578 self ._ws ._channel .send (
576579 "closeServer" ,
577580 {
578581 "code" : code ,
579582 "reason" : reason ,
580583 "wasClean" : True ,
581584 },
582- )
585+ ),
583586 )
584587
585588 def send (self , message : Union [str , bytes ]) -> None :
586589 if isinstance (message , str ):
587590 _create_task_and_ignore_exception (
591+ self ._ws ._loop ,
588592 self ._ws ._channel .send (
589593 "sendToServer" , {"message" : message , "isBase64" : False }
590- )
594+ ),
591595 )
592596 else :
593597 _create_task_and_ignore_exception (
598+ self ._ws ._loop ,
594599 self ._ws ._channel .send (
595600 "sendToServer" ,
596601 {"message" : base64 .b64encode (message ).decode (), "isBase64" : True },
597- )
602+ ),
598603 )
599604
600605
@@ -628,7 +633,9 @@ def _channel_message_from_page(self, event: Dict) -> None:
628633 else event ["message" ]
629634 )
630635 elif self ._connected :
631- _create_task_and_ignore_exception (self ._channel .send ("sendToServer" , event ))
636+ _create_task_and_ignore_exception (
637+ self ._loop , self ._channel .send ("sendToServer" , event )
638+ )
632639
633640 def _channel_message_from_server (self , event : Dict ) -> None :
634641 if self ._on_server_message :
@@ -638,19 +645,25 @@ def _channel_message_from_server(self, event: Dict) -> None:
638645 else event ["message" ]
639646 )
640647 else :
641- _create_task_and_ignore_exception (self ._channel .send ("sendToPage" , event ))
648+ _create_task_and_ignore_exception (
649+ self ._loop , self ._channel .send ("sendToPage" , event )
650+ )
642651
643652 def _channel_close_page (self , event : Dict ) -> None :
644653 if self ._on_page_close :
645654 self ._on_page_close (event ["code" ], event ["reason" ])
646655 else :
647- _create_task_and_ignore_exception (self ._channel .send ("closeServer" , event ))
656+ _create_task_and_ignore_exception (
657+ self ._loop , self ._channel .send ("closeServer" , event )
658+ )
648659
649660 def _channel_close_server (self , event : Dict ) -> None :
650661 if self ._on_server_close :
651662 self ._on_server_close (event ["code" ], event ["reason" ])
652663 else :
653- _create_task_and_ignore_exception (self ._channel .send ("closePage" , event ))
664+ _create_task_and_ignore_exception (
665+ self ._loop , self ._channel .send ("closePage" , event )
666+ )
654667
655668 @property
656669 def url (self ) -> str :
@@ -674,19 +687,21 @@ def connect_to_server(self) -> "WebSocketRoute":
674687 def send (self , message : Union [str , bytes ]) -> None :
675688 if isinstance (message , str ):
676689 _create_task_and_ignore_exception (
690+ self ._loop ,
677691 self ._channel .send (
678692 "sendToPage" , {"message" : message , "isBase64" : False }
679- )
693+ ),
680694 )
681695 else :
682696 _create_task_and_ignore_exception (
697+ self ._loop ,
683698 self ._channel .send (
684699 "sendToPage" ,
685700 {
686701 "message" : base64 .b64encode (message ).decode (),
687702 "isBase64" : True ,
688703 },
689- )
704+ ),
690705 )
691706
692707 def on_message (self , handler : Callable [[Union [str , bytes ]], Any ]) -> None :
0 commit comments