當配置應用程式來使用 Web 傳訊服務時,可以利用多種方法,將訊息發佈到瀏覽器用戶端。
這個主題討論瀏覽器用戶端發佈及透過 Web 應用程式發佈。
第一個方法是透過瀏覽器來進行的用戶端發佈。 發佈是 Bayeux 通訊協定的一部分。 從瀏覽器發佈,會啟用另一種樣式的 Web 應用程式。 範例可包括網頁的內嵌會談和顯示狀態、協同運作的 Web 編輯應用程式,或遊戲應用程式。 在 Web 傳訊配置檔中,clientCanPublish 選項必須設為
true,用戶端才能夠發佈。在瀏覽器內發佈的程式碼,類似於下列 Dojo Toolkit cometd 用戶端範例:
dojox.cometd.publish("/testtopic", { test: "data"}); |
第二個方法是透過 JavaTM Platform Enterprise Edition (Java EE) 應用程式來發佈到 Web 傳訊用戶端。 Web 傳訊服務會將用戶端橋接到服務整合匯流排,以進行訊息的發佈和遞送。 需要傳到 Web 用戶端的訊息,必須透過服務整合匯流排來遞送。 您應該使用標準 J2EE 服務整合匯流排發佈方法。 在 Enterprise Bean 或 Servlet 中,可以使用這些標準方法。 請參閱服務整合匯流排發佈一節,以取得相關資訊。
為了協助發佈到 Web 傳訊用戶端,Web 傳訊應用程式公用程式庫提供了一個發佈 API。 與標準 JMS 發佈方法相反,當使用發佈 API 時,會將發佈至 Web 傳訊用戶端簡化。 這些簡化包括 Bayeux 通道至服務的整合主題對映,以及能夠輕鬆識別支援的 JMS 訊息類型。 當使用發佈 API 時,請使用下列步驟:
<servlet> <display-name>Publisher</display-name> <servlet-name>Publisher</servlet-name> <servlet-class> com.ibm.websphere.webmsg.publisher.jndijms.JmsPublisherServlet </servlet-class> <init-param> <param-name>CONNECTION_FACTORY_JNDI_NAME</param-name> <param-value>java:comp/env/jms/QuotePublish</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> |
Publisher publisher = (Publisher)servletContext.getAttribute(JmsPublisherServlet.PUBLISHER_SERVLET_CONTEXT_KEY); if (publisher == null) { throw new ServletException("Publisher servlet not initialized, or not initialized before app"); } try { publisher.publish(new BayeuxJmsTextMsg(s.getTopic(), data)); } catch (PublisherException e){ logger.log(Level.WARNING, "Error publishing simulated data. Msg: " + e.toString()); } |
如需「發佈 API」的用法範例,請參閱 QuoteStreamer 應用程式。 請閱讀發佈 API 文件,以瞭解 Web 傳訊發佈 API。