WebSockets
简介
除了 Ajax API,从 5.4.0 版本开始,您可以使用 HTML5 WebSockets 与您浏览器中的代理交换消息。
HTML 5 引入了 WebSockets,作为一种标准化方式,从网页异步地与服务器通信。这实际上是为网页实现异步消息传递的理想通道。由于 JavaScript 很容易处理文本和 JSON 格式的数据,Stomp 协议是在 WebSockets 上使用的线协议的最佳选择。从 5.9.0 版本开始,我们还支持在 WebSockets 上使用高效的二进制 MQTT 协议。
与简单的 Ajax API 相比,该解决方案应该为 JavaScript 客户端提供更好的消息传递功能,因为在 JavaScript 中实现 Stomp 或 MQTT 会带来更多面向消息传递的 API 和功能,例如事务。
配置
ActiveMQ Classic 附带了 WebSocket 传输,它实现了 WebSockets 上的 Stomp 功能。
要配置它,您需要将类似以下内容添加到您的 ActiveMQ Classic 配置文件中
<transportConnectors>
<transportConnector name="websocket" uri="ws://0.0.0.0:61614"/>
</transportConnectors>
需要注意的是,WebSockets(就像 Ajax 一样)实现了 同源策略,因此您只能访问与运行客户端的 Web 应用程序位于同一主机上的代理。
安全 Web Sockets
5.7.0 版本引入了 安全 Web Socket 传输。要配置它,您需要做两件事。首先,您需要像这样配置一个新的传输连接器
<transportConnectors>
<transportConnector name="secure_websocket" uri="wss://0.0.0.0:61614"/>
</transportConnectors>
请注意,我们使用 wss URL 前缀来表示协议的安全版本。接下来,您需要为此传输提供 SSL 上下文。您可以通过在代理配置中以类似于为 ssl 或 https 传输所做的方式提供 sslContext 来做到这一点。
<sslContext>
<sslContext keyStore="file:${activemq.conf}/broker.ks"
keyStorePassword="password" trustStore="file:${activemq.conf}/broker.ts"
trustStorePassword="password"
/>
</sslContext>
就是这样,您的安全 WebSockets 传输已准备就绪。查看下一部分,了解如何使用演示对其进行测试。
演示
从 5.6.0 版本开始,stomp-websocket 库的改编演示与 ActiveMQ Classic Web 演示应用程序集成在一起。
从 5.9.0 版本开始,我们有一个使用 MQTT 和 Eclipse Paho 客户端 的类似演示。
要查看演示
- 使用
ws
传输启动代理(您可以为此使用 activemq-demo.xml 配置) - 转到 https://127.0.0.1:8161/demo/websocket 检查 Stomp 示例
- 转到 https://127.0.0.1:8161/demo/mqtt 检查 MQTT 示例