/** * 向终端发送CONNECT命令 */ private function _stomp_connect() { // 发送CONNECT $cmd = new BStompConnectFrame(); $cmd->role = $this->role; $cmd->session_id = $this->session_id; $cmd->topic_name = $this->topic_name; if (!$this->send($cmd)) { BigpipeLog::warning("[stomp connect error]"); return false; } // 接收CONNECTED $res_body = $this->receive(); if (null === $res_body) { BigpipeLog::warning("[stomp receive connected error]"); return false; } // parse CONNECTED $ack = new BStompConnectedFrame(); if (!$ack->load($res_body)) { BigpipeLog::warning('[stomp parse connected frame error][cmd_type:' . $ack->command_type . '][msg:' . $ack->last_error_message() . ']'); return false; } // 更新session id和session message id $this->session_id = $ack->session_id; $this->session_message_id = $ack->session_message_id + 1; return true; }