22
33namespace Rx \Websocket ;
44
5+ use Psr \Http \Message \RequestInterface ;
6+ use Psr \Http \Message \ResponseInterface ;
57use Rx \Websocket \RFC6455 \Messaging \Protocol \Frame ;
68use Rx \Observable ;
79use Rx \Observable \AnonymousObservable ;
@@ -27,21 +29,34 @@ class MessageSubject extends Subject
2729 /** @var string */
2830 private $ subProtocol ;
2931
32+ /** @var RequestInterface */
33+ private $ request ;
34+
35+ /** @var ResponseInterface */
36+ private $ response ;
37+
3038 /**
3139 * ConnectionSubject constructor.
3240 * @param ObservableInterface $rawDataIn
3341 * @param ObserverInterface $rawDataOut
3442 * @param bool $mask
3543 * @param bool $useMessageObject
3644 * @param string $subProtocol
45+ * @param RequestInterface $request
46+ * @param ResponseInterface $response
3747 */
3848 public function __construct (
3949 ObservableInterface $ rawDataIn ,
4050 ObserverInterface $ rawDataOut ,
4151 $ mask = false ,
4252 $ useMessageObject = false ,
43- $ subProtocol = ""
53+ $ subProtocol = "" ,
54+ RequestInterface $ request ,
55+ ResponseInterface $ response
4456 ) {
57+ $ this ->request = $ request ;
58+ $ this ->response = $ response ;
59+
4560 $ this ->rawDataIn = new AnonymousObservable (function ($ observer ) use ($ rawDataIn ) {
4661 return $ rawDataIn ->subscribe ($ observer );
4762 });
@@ -92,10 +107,12 @@ function () use ($frames) {
92107 ->filter (function (Frame $ frame ) {
93108 return $ frame ->getOpcode () === $ frame ::OP_PING ;
94109 })
95- ->subscribe (new CallbackObserver (function (Frame $ frame ) {
96- $ pong = new Frame ($ frame ->getPayload (), true , Frame::OP_PONG );
97- $ this ->sendFrame ($ pong );
98- }));
110+ ->subscribe (new CallbackObserver (
111+ function (Frame $ frame ) {
112+ $ pong = new Frame ($ frame ->getPayload (), true , Frame::OP_PONG );
113+ $ this ->sendFrame ($ pong );
114+ }
115+ ));
99116
100117 $ frames
101118 ->filter (function (Frame $ frame ) {
@@ -177,4 +194,20 @@ public function getSubProtocol()
177194 {
178195 return $ this ->subProtocol ;
179196 }
197+
198+ /**
199+ * @return RequestInterface
200+ */
201+ public function getRequest ()
202+ {
203+ return $ this ->request ;
204+ }
205+
206+ /**
207+ * @return ResponseInterface
208+ */
209+ public function getResponse ()
210+ {
211+ return $ this ->response ;
212+ }
180213}
0 commit comments