jeeinn / php-stomp-frame
仅用于生成和解析stomp帧
v1.0.1
2023-02-02 09:14 UTC
Requires
- php: >=5.6
- ext-json: *
README
仅用于生成和解析stomp帧
stomp frame
可用于 tcp、tls、wss
stomp
协议帧,可用于 tcp、tls、wss 等协议
参考: http://stomp.github.io/stomp-specification-1.2.html#Frames_and_Headers
案例
composer require jeeinn/php-stomp-frame
帧
$userName = 'test'; $password = 'passcode'; $queue = 'service_queue_v1.2'; $stompFrame = new \Stomp\Frame(); # connect frame $connectFrame = $stompFrame->setLogin($userName, $password)->setHeartBeat(0, 10000)->getConnect(); print_r($connectFrame); # subscribe frame $subscribeFrame = $stompFrame->getSubscribe($queue); print_r($subscribeFrame); # send frame $sendFrame = $stompFrame->setBody('i am tester')->getSend($queue);
解析器
$message = <<<Message CONNECTED server:ActiveMQ/5.11.0.redhat-630495 heart-beat:10000,0 session:ID:broker-amq-2-3-2tx5b-40311-1621354806699-3:162340 version:1.1 Message; $stompFrame = new \Stomp\Frame(); try { $parsed = $stompFrame->parser($message); print_r($parsed); } catch (Exception $e) { echo $e->getMessage(); }
通过 ws(s)://
基于 WebSocket,示例
composer require textalk/websocket
// over wss require __DIR__ . '/vendor/autoload.php'; $url = 'wss://echo.websocket.org:443'; $userName = 'test'; $password = 'passcode'; $queue = 'service_queue_v1.2'; $stompFrame = new \Stomp\Frame(); # connect frame $connectFrame = $stompFrame->setLogin($userName, $password)->setHeartBeat(0, 10000)->getConnect(); # subscribe frame $subscribeFrame = $stompFrame->getSubscribe($queue); #use websocket $client = new \WebSocket\Client($url); $client->text($connectFrame); //var_dump($client->isConnected()); $client->text($subscribeFrame); # loop listening while (true) { try { $message = $client->receive(); $parsed = $stompFrame->parser($message); //print_r($parsed); # Error, Break while loop to stop listening, Possibly log errors if ($parsed['command'] == 'ERROR') { echo $parsed['body']; $client->close(); break; } // Deal your data $data = json_decode($parsed['body'], true); print_r($data); // Act[enter image description here][4] on received message // Later, Break while loop to stop listening } catch (Exception $e) { // Possibly log errors echo $e->getMessage(); } }
如果您获取到空内容,请参考: #1 (评论)
使用 tcp 或 ssl
参考: https://github.com/stomp-php/stomp-php
待办事项
- CONNECT
- SEND
- SUBSCRIBE
- UNSUBSCRIBE
- BEGIN
- COMMIT
- ABORT
- ACK
- NACK
- DISCONNECT