WebSockets
簡介
除了 Ajax API 之外,從 5.4.0 版本開始,您可以使用 HTML5 WebSockets 從您的瀏覽器與訊息代理程式交換訊息。
HTML 5 引入了 WebSockets,作為一種從網頁與伺服器非同步通訊的標準化方式。這實際上是實作網頁非同步訊息傳遞的理想通道。由於 JavaScript 可以輕鬆處理文字和 JSON 格式的資料,Stomp 協定是透過 WebSockets 使用的線路協定的不錯選擇。從 5.9.0 版本開始,我們也支援透過 WebSockets 進行高效的二進位 MQTT 協定。
此解決方案應為 JavaScript 客戶端帶來比簡單的 Ajax API 更好的訊息傳遞能力,因為在 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 應用程式位於同一主機上的訊息代理程式。
安全 WebSockets
5.7.0 版本引入了 *安全 WebSocket* 傳輸。要配置它,您需要兩件事。首先,您需要配置一個新的傳輸連接器,如下所示
<transportConnectors>
<transportConnector name="secure_websocket" uri="wss://0.0.0.0:61614"/>
</transportConnectors>
請注意,我們使用 *wss* URL 前綴來表示協定的安全版本。接下來,您需要為此傳輸提供 SSL 內容。您可以透過在您的訊息代理程式設定中提供 *sslContext* 來完成,方式與您對 *ssl* 或 *https* 傳輸的方式類似。
<sslContext>
<sslContext keyStore="file:${activemq.conf}/broker.ks"
keyStorePassword="password" trustStore="file:${activemq.conf}/broker.ts"
trustStorePassword="password"
/>
</sslContext>
這樣就完成了,您的安全 WebSocket 傳輸已準備就緒。請查看下一節,了解如何使用演示來測試它。
演示
從 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 範例