2013-02-28 78 views
2

我有一個Web服務器,當服務器檢測到數據庫發生變化時,我想將數據發送到客戶端。我希望客戶端在沒有輪詢的情況下接收數據。java腳本服務器異步事件

達到此目的的最佳方法是什麼?

(我讀了一些關於SSE - 服務器發送的事件,但不知道這是要走的路)

感謝

+0

要檢測數據庫中的更改,必須有一個輪詢例程。 – 2013-02-28 06:27:32

+0

數據庫更改是在服務器上,我想避免客戶端投票服務器 – 2013-02-28 06:28:15

+0

你只提到javascript和jquery,你能告訴我們你正在使用什麼數據庫和你的前端是什麼? – 2013-02-28 06:32:27

回答

0

如果投票是不是一種選擇,你可以考慮一下了更好的技術, WebSockets,如果你的服務器支持它(和你的目標瀏覽器!)。 不管怎樣,你需要一個由客戶端連接到服務器的連接。

+0

爲什麼WebSockets比SSE更好? – 2013-02-28 06:28:54

+0

我說它比傳統的輪詢技術(恕我直言)好,不比SSE。 WS和SSE都擅長他們的工作,閱讀更多內容:http://stackoverflow.com/questions/5195452/websockets-vs-server-sent-events-eventsource – Greg 2013-02-28 06:56:28

0

答案會根據客戶端Javascript的自由而變化。

如果您的應用程序爲您提供了完全的自由,您甚至可以將您的客戶端設置爲JMS偵聽器,並將JMS消息從客戶端傳送到服務器。例如,您可以使用Apache Ajax

另一種方法是設置Web客戶端是Redis的客戶使用,爲前,Webdis

正如你所提到的,服務器發送的事件是一個選項了,所以是的WebSockets。 你需要根據你的約束來選擇。

1

是的,服務器發送事件是適用於偵聽服務器上的更改的技術。

如果您只是在監聽,那麼SSE比雙向WebSocket更好(更快,輕量級,HTTP兼容)。