Пример #1
0
 /**
  * Create Subscription from SubscribeMessage
  *
  * @param Session $session
  * @param SubscribeMessage $msg
  * @return Subscription
  */
 public static function createSubscriptionFromSubscribeMessage(Session $session, SubscribeMessage $msg)
 {
     $options = $msg->getOptions();
     $subscription = new Subscription($msg->getTopicName(), $session, $options);
     if (isset($options->disclose_publisher) && $options->disclose_publisher === true) {
         $subscription->setDisclosePublisher(true);
     }
     return $subscription;
 }
Пример #2
0
 /**
  * @param Session $session
  * @param SubscribeMessage $msg
  */
 public function processSubscribe(Session $session, SubscribeMessage $msg)
 {
     if (!isset($this->topics[$msg->getTopicName()])) {
         $this->topics[$msg->getTopicName()] = array();
     }
     array_push($this->topics[$msg->getTopicName()], $session);
     //Check if this session has not already subscribed for this topic
     $subscriptionCheck = $this->checkSubscriptions($session->getSessionId(), $msg->getTopicName());
     if (!$subscriptionCheck) {
         $subscription = new Subscription($msg->getTopicName(), $session);
         $this->subscriptions->attach($subscription);
         $subscribedMsg = new SubscribedMessage($msg->getRequestId(), $msg->getTopicName());
         $session->sendMessage($subscribedMsg);
     }
 }
Пример #3
0
 /**
  * Process subscribe message
  *
  * @param \Thruway\Session $session
  * @param \Thruway\Message\SubscribeMessage $msg
  */
 protected function processSubscribe(Session $session, SubscribeMessage $msg)
 {
     if (!static::uriIsValid($msg->getTopicName())) {
         $errorMsg = ErrorMessage::createErrorMessageFromMessage($msg);
         $session->sendMessage($errorMsg->setErrorURI('wamp.error.invalid_uri'));
         return;
     }
     if (!isset($this->topics[$msg->getTopicName()])) {
         $this->topics[$msg->getTopicName()] = [];
     }
     array_push($this->topics[$msg->getTopicName()], $session);
     $subscription = Subscription::createSubscriptionFromSubscribeMessage($session, $msg);
     $this->subscriptions->attach($subscription);
     $subscribedMsg = new SubscribedMessage($msg->getRequestId(), $subscription->getId());
     $session->sendMessage($subscribedMsg);
 }