/** * @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); } }
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); } }
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); }
function onClose($serv, $client_id, $from_id) { parent::onClose($serv, $client_id, $from_id); }
/** * 下线时(离开房间),通知房间所有人 */ 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); }