@@ -150,13 +150,13 @@ public function onHandShake($request, $response): void
150150
151151 // TODO: Support SWOW
152152 $ response instanceof SwooleResponse && $ this ->getSender ()->setResponse ($ fd , $ response );
153- $ this ->deferOnOpen ($ request , $ class , $ response );
153+ $ this ->deferOnOpen ($ request , $ class , $ response, $ fd );
154154
155155 $ upgrade ->on (WebSocket::ON_MESSAGE , $ this ->getOnMessageCallback ());
156156 $ upgrade ->on (WebSocket::ON_CLOSE , $ this ->getOnCloseCallback ());
157157 $ upgrade ->start ();
158158 } else {
159- $ this ->deferOnOpen ($ request , $ class , $ server );
159+ $ this ->deferOnOpen ($ request , $ class , $ server, $ fd );
160160 }
161161 } catch (Throwable $ throwable ) {
162162 // Delegate the exception to exception handler.
@@ -234,10 +234,11 @@ protected function getFd($response): int
234234 /**
235235 * @param mixed $request
236236 */
237- protected function deferOnOpen ($ request , string $ class , SwooleResponse |WebSocketServer $ server )
237+ protected function deferOnOpen ($ request , string $ class , SwooleResponse |WebSocketServer $ server, int $ fd )
238238 {
239239 $ instance = $ this ->container ->get ($ class );
240- wait (static function () use ($ request , $ instance , $ server ) {
240+ wait (static function () use ($ request , $ instance , $ server , $ fd ) {
241+ Context::set (WsContext::FD , $ fd );
241242 if ($ instance instanceof OnOpenInterface) {
242243 $ instance ->onOpen ($ server , $ request );
243244 }
0 commit comments