#php #http #stomp
#php #http #stomp
Вопрос:
Я использую Node.js чтобы запустить STOMP через WebSocket, потому что он поддерживает пользовательские заголовки. При HTTP-квитировании серверу требуется cookie для проверки подлинности, а не токен в адресе.
Как PHPer, я хочу использовать это в PHP, но долго искал в Google и не нашел способа. кто-нибудь может помочь?
Ответ №1:
STOMP не ограничивается Node.js , или Java и т.д. Есть
- расширение STOMP PECL для PHP,
- Библиотеки PHP STOMP, например Stomp-PHP,
- и общие библиотеки обмена сообщениями, которые поддерживают STOMP,
например, транспортный уровень STOMP в Enqueue или Laravel-Queue
Что касается вашего конкретного сценария, трудно найти прямой ответ, не зная более подробной информации, но вот пример из stomp-php library samples, который устанавливает пользовательский заголовок:
use StompClient;
use StompSimpleStomp;
use StompTransportMap;
// make a connection
$client = new Client('tcp://localhost:61613');
$stomp = new SimpleStomp($client);
// send a message to the queue
$body = array('city' => 'Belgrade', 'name' => 'Dejan');
$header = array();
$header['transformation'] = 'jms-map-json';
$mapMessage = new Map($body, $header);
$client->send('/queue/test', $mapMessage);
echo 'Sending array: ';
print_r($body);
$stomp->subscribe('/queue/test', 'transform-test', 'client', null, ['transformation' => 'jms-map-json']);
/** @var Map $msg */
$msg = $stomp->read();
// extract
if ($msg != null) {
echo 'Received array: ';
print_r($msg->map);
// mark the message as received in the queue
$stomp->ack($msg);
} else {
echo "Failed to receive a messagen";
}
Комментарии:
1. большое вам спасибо. Я пробовал эту библиотеку (stomp) раньше, однако клиент не может настроить заголовок, я отказываюсь от этого. извините за мой плохой английский.
Ответ №2:
вам нужна оболочка потока websocket, если вы хотите подключиться с использованием протокола