通过 websocket 发送 STOMP 帧
Posted
技术标签:
【中文标题】通过 websocket 发送 STOMP 帧【英文标题】:Sending a STOMP frame through websocket 【发布时间】:2017-11-10 16:41:51 【问题描述】:由于任何地方都没有 webstomp(通过 Websocket STOMP)C++ 实现,我正在开发自己的。我已经设置了一个 webstomp 服务器,并且我已经确认它可以使用 webstomp 的 javascript 实现来工作。
现在我依赖于 QT 的 websocket 实现。我测试并使用了常规的 websocket。所以现在是 STOMP 的实现。查看 STOMP 帧,我必须发送的第一帧可能是这样的:
CONNECT
login: <username>
passcode: <passcode>
^@
^@
是空字符。我遇到的问题是,无论我做什么,我似乎都无法从服务器获得 任何 类型的响应。我尝试了不同的编码、不同的消息、不同的连接帧等。我想知道我是不是做错了什么或者我错过了什么。上述框架的示例如下所示:
void WebSTOMP::onConnected()
if (m_debug)
qDebug() << "WebSocket connected";
connect(&m_webSocket, &QWebSocket::textMessageReceived,
this, &EchoClient::onTextMessageReceived);
std::string myMessage = "CONNECT \nlogin: test\npasscode : test\n\n\0";
m_webSocket.sendTextMessage(QString::fromUtf8(myMessage.c_str()));
然后我再也没有得到回复。
提前致谢 =)
【问题讨论】:
有趣的是,我正在谷歌搜索 Websocket 并找到你的 github,然后来到这里。我想知道 3 年后是否有现成的实现,可能使用 boost::beast websocket? 【参考方案1】:由于字符串的空字符终止符,消息的长度加一
【讨论】:
【参考方案2】:解决了。未来:由于包含空字符终止符,必须手动指定长度。
【讨论】:
以上是关于通过 websocket 发送 STOMP 帧的主要内容,如果未能解决你的问题,请参考以下文章
引入sleuth依赖导致websocket 发送 STOMP 消息失败
引入sleuth依赖导致websocket 发送 STOMP 消息失败
Spring WebSockets 运行时监控 STOMP 帧 - 解释