我想订阅 Spring 框架 WebSocket 并收到回复。
根据我的目标 WebSocket 服务器,通信是使用 STOMP 发布协议完成的(基于 Java Springframework API 构建)https://stomp.github.io/stomp-specification-1.1.html
现在我正在处理的客户端是基于 PHP 构建的,并使用https://github.com/Textalk/websocket-php/作为 websocket 客户端。
我接收服务器响应的想法是根据这个人的回答Websocket Client not received any messages遵循 STOMP over Websocket 技术。
使用当前的 websocket 客户端,我执行这些步骤
发送连接(请求?)
发送订阅
主动接收回复
$client = new WebSocket\Client($ws_url); //Step 1 Inintate connection; $open_msg = "CONNECT\naccept-version:1.0,1.1,2.0\n\n\x00\n"; //Step 2 Subscribe Request; $client->send($open_msg); $subs = "SUBSCRIBE\nid:0\ndestination:/user/queue\nack:auto\n\n\x00\n"; $client->send($subs); while (true) { try { $message = $client->receive(); echo $message; // Act[enter image description here][4] on received message // Later, Break while loop to stop listening } catch (\WebSocket\ConnectionException $e) { // Possibly log errors } } $client->close();
连接(步骤 1)已完成并经过测试。
由于它在循环上运行,因此Received
始终打印。
有谁知道为什么 API 没有发送回复?