2015-07-21 49 views
2

我正在使用中,我要廣播消息給一些特定用戶的服務器發送事件編寫Web應用程序代碼的多個用戶。我想在客戶端使用eventsource,在服務器端使用球衣廣播者。如果他們以任何其他方式來實現它。 由於在應用程序中使用的tomcat版本和長輪詢,Websockets在我的應用程序中不支持。如何使用服務器發送的事件廣播到使用在客戶端JavaScript和Java Server端

任何人都可以與工作代碼共享示例。 在此先感謝

+0

http://stackoverflow.com/questions/15713080/html5-server-sent-events-and-multiple-clients-without-using-comet。幾乎相同的要求,但沒有那麼複雜。只有多個用戶登錄到某個視圖,我應該能夠向某些特定用戶發送通知。我不能使用氣氛或任何第三方框架。 – Anshul

回答

1

根據您的使用情況的,另一種解決方案是使用一個EventSource的和不同的消息爲不同類型的用戶。例如,標準用戶只能收聽«標準»類型的留言,特殊用戶只能收聽«特殊»類型的留言。

在這種情況下,它是由客戶端來過濾/區分根據種類的用戶收聽哪些事件。但由於只有一個事件源,因此您可以讓客戶端應用程序可以偵聽這兩種消息。

因此,選擇一個或另一個解決方案確實取決於用例。

我已經在同一個github上提交了這個解決方案。解決方案1被標記爲「v1」,解決方案2被標記爲「v2」。

+1

你可以分享github網址 – Anshul

+1

我的其他帖子中的github鏈接沒有改變:它是[那裏](https://github.com/streamdataio/demo-sse-broadcast)。 – ctranxuan

2

也許,我看到的解決辦法,是用兩種不同的EventSource來解決特定的用戶和標準用戶。這意味着兩個不同的網址。 在示例代碼there中,我使用查詢參數來區分這兩種用戶,但您也可以使用不同的路徑(取決於您的用例)。

這通常是我們的用戶想要通過streamdata.io(streamdata.io基於SSE)將他們的JSON API轉換爲推送API時的情況(聲明:我是developer @ streamdata.io)。

使用streamdata.io JS SDK,您還可以使用標題區分用戶。請注意,SSE不支持自定義標題:您需要使用查詢參數。

如果說你的用例依賴於一個JSON API,你要推的數據,你可以使用streamdata.io)。

+0

我想在Tomcat 8.0中運行這個例子。但我得到404錯誤。然後我說 com.sun.jersey 新澤西州的servlet 1.19 之後,我收到500錯誤。你能檢查我做錯了什麼嗎? – Anshul

+0

該示例使用SpringBoot,它使用自己的嵌入式Tomcat 8來運行該應用程序。所以,執行jar會啓動一個嵌入式Tomcat 8.但是如果你想在Tomcat 8中部署一個war,你需要做一些[修改](http://docs.spring.io/spring-boot/docs/ current/reference/htmlsingle /#howto-create-a-deployable-war-file)並用適當的eventsource url更新'index.html'。我在github回購中做了一個分支'tomcat-deployment'。只需運行'mvn clean install'來生成戰爭並將其部署到Tomcat中。請參閱README.md。 – ctranxuan

+0

你可以提供tomcat-部署分支的鏈接 – Anshul

相關問題