Inheritance: extends HttpServer
Exemplo n.º 1
0
 /**
  * @param     $serv swoole_server
  * @param int $worker_id
  */
 function onStart($serv, $worker_id = 0)
 {
     parent::onStart($serv, $worker_id);
     $this->store = new Redis();
     $this->store->delAllUser();
     $serv->addtimer(30000);
 }
 /**
  * 向浏览器发送数据
  * @param int    $client_id
  * @param string $data
  * @return bool
  */
 function send($client_id, $data)
 {
     /**
      * @var $request Swoole\Request
      */
     $request = $this->requests[$client_id];
     if ($request->isWebSocket()) {
         return parent::send($client_id, $data);
     } else {
         $response = new Swoole\Response();
         $response->send_head('Access-Control-Allow-Origin', 'http://127.0.0.1');
         $response->body = json_encode(array('success' => 1, 'text' => $data));
         return $this->response($request, $response);
     }
 }
Exemplo n.º 3
0
 public function onReceive($server, $fd, $from_id, $data)
 {
     $conn = $server->connection_info($fd, $from_id);
     if ($conn['from_port'] == 9906) {
         if (!empty($this->connections)) {
             foreach ($this->connections as $conn_fd => $v) {
                 $tmp = json_decode($data, true);
                 if ($tmp['module_id'] == $v['module_id'] and $tmp['interface_id'] == $v['interface_id']) {
                     $tmp['time'] = date("Y-m-d H:i:s", $tmp['time']);
                     $this->send($conn_fd, json_encode($tmp));
                 }
             }
         }
     } else {
         parent::onReceive($server, $fd, $from_id, $data);
     }
 }
Exemplo n.º 4
0
 final function onClose($serv, $fd, $reactor_id)
 {
     if (isset($this->fd_session_map[$fd])) {
         $session_id = $this->fd_session_map[$fd];
         unset($this->fd_session_map[$fd], $this->wait_requests[$session_id], $this->sessions[$session_id]);
         //再执行一次
         $this->onExit($session_id);
     }
     parent::onClose($serv, $fd, $reactor_id);
 }
Exemplo n.º 5
0
 function onClose($serv, $client_id, $from_id)
 {
     parent::onClose($serv, $client_id, $from_id);
 }
Exemplo n.º 6
0
 /**
  * 下线时(离开房间),通知房间所有人
  */
 function onClose($serv, $client_id, $from_id)
 {
     $userInfo = $this->store->getUser($client_id);
     if (!$userInfo) {
         return;
     }
     $resMsg = array('cmd' => 'offline', 'fd' => $client_id, 'from' => 0, 'rim' => $userInfo['rid'], 'data' => $userInfo['name'] . "下线了。。");
     //将下线消息发送给所有人
     $this->log("onOffline: " . $client_id);
     $room_id = isset($userInfo['rid']) ? $userInfo['rid'] : 0;
     echo PHP_EOL . "onClose: room_id:" . $room_id . ", client_id:" . $client_id;
     if ($room_id > 0) {
         $flag = $this->rooms->leaveRooms($client_id, $room_id);
         echo PHP_EOL . "leaveRooms: room_id:" . $room_id . ", client_id:" . $client_id;
         $this->store->logout($client_id, $room_id);
         $this->broadcastRoomsJson($client_id, $room_id, $resMsg);
         echo PHP_EOL . "broadcastRooms: room_id:" . $room_id . ", client_id:" . $client_id;
     } else {
         $this->store->logout($client_id);
         $this->broadcastJson($client_id, $resMsg);
     }
     parent::onClose($serv, $client_id, $from_id);
 }