private function _gen_connected_frame() { $ack = new BStompConnectedFrame(); $ack->session_id = 'id-for-unittest'; $ack->session_message_id = 9527; $ack->store(); $good = $ack->buffer(); // bad frame $bad_ack = new BStompReceiptFrame(); $bad_ack->receipt_id = 'bad-id'; $bad_ack->store(); $bad = $bad_ack->buffer(); return array('good' => $good, 'bad' => $bad); }
/** * 向终端发送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; }