2013-04-04 76 views
2

我正在尋找一個實時託管的推送/套接字服務(支付罰款),它將處理來自許多客戶端(JS)和服務器API的許多連接/通道,它們可以訂閱/發佈到這些通道一個PHP腳本。實時應用程序需要推送服務建議

下面是一個例子:

客戶端UI已使100輛卡車車隊,當卡車被修改其數據推送到信道(如:/更新/卡車/ 34)到服務器(PHP訂戶),數據庫被更新並且收據/數據被髮送回單卡車通道。

我們有一個在Firebase.io中工作的原型,但我們不需要firebase數據庫,我們只需要實時傳輸。 firebase.io的一大特色就是它的亮點,我們可以一次訂閱許多小型頻道。這有助於減少有效負載,因爲僅傳輸已更改的對象數據。

糾正我,如果我錯了,但我認爲推動者和pubnub將允許我爲打開該網站的每個客戶端創建100卡車pub/subs(在這個例子中)?

任何人都可以提供建議嗎?

+0

如何讓您的客戶端代碼在收到確認後刪除更新?或者讓卡車發送確認信息回到服務器,然後刪除更新。兩者都會將Firebase數據保持爲「正在進行的更新」。 – 2013-04-04 11:47:37

+0

謝謝弗蘭克!這也是我們的建議,當你只是想發送短暫的數據。客戶只需在看到消息時將其「刪除」即可「消息」。 – 2013-04-04 21:51:29

+0

但是請注意,在這種情況下,消息隊列可能不是您想要的。如果您正在跟蹤車輛的位置,爲什麼不在每次更新時重寫位置?然後,你永遠不會在Firebase上發佈陳舊的消息 - 無論最後的位置如何。 – 2013-04-04 21:52:29

回答

0

[我的火力地堡工作]

火力地堡應繼續很好地爲您工作,即使你不需要持久性的特點。我們並不知道任何情況下,我們的持久性實際上讓事情變得更加困難,並且在許多情況下,它實際上讓您的生活變得更加輕鬆。例如,您可能希望能夠詢問「卡車的當前位置」,而無需等待下一次更新發送。

如果您遇到持久性對您而言實際上是負面的情況,我們很樂意聽到它。這當然不是我們的意圖。

此外 - 我們不是Firebase.io - 我們只是Firebase(儘管我們擁有firebase.io域名)。

+0

感謝評論安德魯。我們與Firebase苦苦掙扎的一件事(可能是我們缺乏理解)是額外的數據層,我們必須與我們的數據庫表保持同步。例如,如果mssql表已經直接更新/或通過第三方提要更新,那麼它將與Firebase和所有實時客戶端不同步。但是,如果客戶端直接使用通道到數據庫服務器來獲取表格內容,那麼我們不必管理第二個數據源。而且我們也獲得了查詢權力,這個firebase是currenlty有限的。 – johnstontrav 2013-04-05 08:33:27

+0

有兩個很好的解決方案:(1)簡單地將所有寫操作直接通過AJAX直接發送到服務器,然後使用我們的REST API從服務器廣播更改(2)在服務器上使用Node.js客戶端,所以您會在發生更改時收到通知,並且您可以更新數據庫。 由於它聽起來像你正在使用PHP,選項#1可能是要走的路。這裏有一個PHP的包裝器,有人寫了一個讓PHP更容易調用REST調用的函數(注意,這是一個第三方項目 - 不是官方的):https://github.com/ktamas77/firebase-php – 2013-04-05 15:25:55

+0

我一直在測試你的想法(1)安德魯和我認爲這對我們很好。謝謝。 – johnstontrav 2013-04-08 09:27:35

2

我可以確認您可以使用Pusher來實現這一點 - 我爲Pusher工作。

PubNub先前將每個通道計爲一個連接,但他們現在似乎已經引入了多路複用。 This FAQ指出您可以通過多路複用連接支持100個頻道。

因此,這兩項服務將能夠實現您正在尋找的內容。我也會通過這個Realtime Web Tech guide獲得更多的選擇。

+0

感謝leggetter,你知道,因爲它沒有明確表示在推銷網站上,如果我可以使用PHP來訂閱頻道,所以我可以更新數據庫。我知道我可以使用節點應用程序橋接PHP腳本,但我正在尋找直接鏈接到PHP。 Pubnub似乎是唯一一個擁有這種排序功能的人。 – johnstontrav 2013-04-04 21:30:37

+1

是的,PubNub有這個。另外還有一款名爲[WrenchPusher]的推進器(https://github.com/westinpigott/WrenchPusher)。你打算運行PHP腳本作爲守護進程嗎?如果您不打算將PHP訂戶運行爲守護程序,那麼您可以讓卡車在狀態更改(事件)時向端點發出HTTP請求,更新數據庫並通過實時服務提供商發佈更改。這一切都取決於您希望您的地理定位準確無誤(猜測) - 非常準確:然後持續連接顯然會更好。 – leggetter 2013-04-05 23:08:21

+0

@leggetter說的都是真的。只是想補充一點,[PubNub有一個叫BLOCKS的新功能](https://www.pubnub.com/products/blocks/)。這意味着您不必訂閱服務器(這對於您在多臺服務器中進行擴展和正確操作可能很困難)。通過BLOCKS,您可以使用Node.js/Promises自定義REST調用(通過Node.js/Promise)從PubNub網絡中爲您的服務器或其他第三方服務提供自定義REST調用,並以高度可擴展,可靠的方式發佈每條消息。 – 2016-10-05 17:37:57

相關問題