2016-09-26 25 views
1

我正嘗試使用Web套接字構建實時應用程序。目前,我正在使用ajax從客戶端拉(每個固定的時間間隔)以獲取數據庫表中的新更改。我並不完全瞭解如何實時製作應用程序。使用Web套接字從數據庫實時更新數據到客戶端

當前實現:
在我的申請,我通過Ajax輪詢獲取數據從數據庫(MariaDB的),並將其顯示在表中的客戶端。

預期的行爲:
從客戶端沒有輪詢並且只要在數據庫方面的變化應該更新所有連接的客戶端。

在我搜索我曾遇到一些解決方案,這是傳來:

  1. 的Node.js + server.io + Oracle數據庫
  2. RethinkDB
  3. 服務器發送的事件
  4. 連續查詢通知

請幫助我找到更好的解決方案。

+0

是在_same_服務器(甚至_same_ VM)中的所有組件嗎? –

+0

@rick James:是在同一臺服務器上的所有組件。 –

回答

1

聽起來對我很好!

Node.js的
甲骨文(+ CQN)
Socket.io通知

  • 在變化的通知

    • Node.js的服務器寄存器查詢的node.js服務器拉取來自數據庫的更改
    • 成功檢索更改後,node.js服務器使用socket.io向所有感興趣的客戶端發佈更改
    +0

    我相信SQL服務器也有類似的通知服務,如果你更喜歡使用它 – Banners

    +0

    如果你想了解更多,請查看我的博客文章,其中包含一些示例應用程序:https://jsao.io/2015/02/實時數據,與節點-JS-插座-IO和Oracle的數據庫/ –

    0

    Chintan,看看socket.io,因爲這將覆蓋你想要的一切

    Socket.IO實現實時雙向的基於事件的通信。它適用於每個平臺,瀏覽器或設備,同時關注可靠性和速度。

    服務器端

    在您的node.js服務器,你會想建立一個'開'事件,引用連接。這連接事件是一個默認事件socket.io給我們,我們可以偵聽並在客戶端(套接字)連接時觸發。因此,在服務器,我們會碰到這樣的:

    socket.on('connection', function() { console.log('Someone just joined'); });

    因此,對於連接我們的服務器將輸出有人剛剛加入

    對此進一步擴展,你可以添加一個EMIT事件,使每個插座:

    socket.on('connection', function() { console.log('Someone just joined'); socket.emit('hello', { message: 'Hello' } });

    所以,當客戶端連接這個你好事件將被髮射。我們可以聽出對客戶端上的這一事件,像這樣:

    客戶端

    socket.on('hello', function(data) { console.log(data.message); // Hello });

    Socket.io是能夠將數據發送兩種方式(雙向)的,所以你也可以發出從客戶端事件和監聽服務器

    你也說過你會所有客戶反應到一定的情況下,對於這個,而不是做一個socket.emit你會做的,而不是對io.emit。請記住,套接字只發送到該套接字。 Io發射到包括髮送者的所有套接字,並使用socket.broadcast.emit將發送給所有連接的客戶端,但不是發送者。

    Check out socket.io ' website

    相關問題