2013-11-23 117 views
1

我正在一個項目,其中包括一個Web方案和後臺服務。 用戶可以訪問Web前端,並且應該與後臺服務進行通信,後臺服務用C++編寫,並且可以在不同的機器上運行(可能多個)。JS前端<-> C++後端通信(不同的服務器)

供參考: 後臺服務器(將來稱爲'後端')的行爲類似於http服務器,並偵聽特定端口上的傳入請求。

到目前爲止,前端通過包含xml或json格式數據的簡單http請求向後端發送命令。

嗯,現在這是我的問題: 由於用戶在前端輸入數據,因此前端需要從後端獲取一些數據以顯示給用戶或在我們的數據庫內部使用它。

你能推薦任何方式來處理從後端到前端的數據發送嗎?

我當前的想法: 後端在啓動時獲取鏈接,排序的pingback url,如果有任何數據返回到前端,它可以調用它。被調用的文件將輸入數據輸入某處以存儲,例如, memcache或僅限mem的數據庫。 我打算在javascript中編寫前端,也許使用像Ember.js或Angular.js這樣的框架,它可以在內部自動處理這些數據更新。無論哪種方式,它都應儘可能使用盡可能少的資源儘可能實時地更新前端。

我目前的方法工作還是純粹愚蠢?

所以一般來說: 你可以給我提示如何改善上述方案或建議任何其他方法如何實現這一點?

我已經使用了這個,但是我發現的全部是Designing Javascript frontend <-> C++ backend communication,但他只是想讓他的後端在同一臺機器上,我有不同的。

編輯: 我忘了最重要的細節(或者我在想):目前只有一個後端實例可以處理很多客戶端。前端的每個用戶都至少有一個客戶端與客戶端管理器(後端)相關聯。所以經理可能會返回很多數據。

這裏真正的問題(或者至少我認爲這是最大的問題)是我應該如何將返回的數據分發給每個客戶端。

Padmak

+0

我想出了另一種方法:由於管理服務器的地址必須保密,因此不可能讓客戶端通過像Node.js這樣的東西直接連接到它。但是,如果我在中間安裝類似代理的東西,我可以按照這種方法做到這一點。但它需要很多工作才能將http服務器更改爲「正常」的tcp服務器我想了解一些關於這些新解決方案的提示。任何? – Padmak

回答

0

有2種好的方法來處理從後端到前端發送數據。

  1. 客戶端投票的一些區間後端,這是一個非常普遍的做法,但效率極低,如果你將要製作一百萬回調

  2. 使用WebSockets,http://en.wikipedia.org/wiki/WebSocket

+0

因爲我只使用一個處理大量客戶端的管理器,所以我最大的問題是如何將返回的數據分發給它們所屬的每個客戶端。我不知道你的建議是否可以做到這一點? – Padmak

+0

我不確定我是否完全理解經理是什麼。糾正我,如果我錯了,我試圖將其全部可視化,Chrome中的Joe Blow(用戶)擁有1+個與其用戶關聯的客戶端。每個客戶都有自己的網絡服務器? – Kingpin2k

+0

Bob有一個帳戶,登錄到前端。他創造了一個新的'工作'。前端連接到後端,從而創建一個新的子流程。 *哎呀發送太快*。經理然後想要發回數據給用戶。管理器中只有一個網絡服務器啓動新客戶端並處理數據。 – Padmak

0

我不熟悉C++作爲後端Web服務,但如果您正在監聽端口並處理url(通過某種類型的控制器?),那麼ajax將是最好的解決方案,你可以設置一個url來從前端發佈數據並返回服務中的數據。我注意到你添加了angular.js和ember.js作爲標籤。

如果你正在使用它們,它們都有很好的框架來處理ajax,但不確定是否使用了ember,但angular.js使用「resources」,它值得Google搜索。

希望我能正確理解您的要求。

另外,如果您使用的是角度,並且您希望獲得實時感覺,則應該查看模型和數據綁定以及$ watch方法。您可以在前端立即更改輸入後發送ajax調用,但是,您會希望添加某種超時,以免不斷向後端發送請求。

+0

非常有趣,絕對好知道這個!儘管存在一個問題:我如何從後端(一次向多個客戶端返回數據)將數據傳遞到不同的前端實例? 對不起,有點模糊和/或不清楚,但很難描述這樣的事情作爲非母語人士^^ – Padmak

+0

沒有問題,所以如果我理解正確,你希望它實時更新跨多個前端實例?如果是的話,你需要一些像網絡套接字,這是你應該開始調查,但我會提供一些資源,但我不知道如何處理與C++ – kkemple

+0

嗯,我認爲它更像這樣:多個前端連接到只有一個後端,那麼我怎麼能把數據從後端傳遞到每個前端?它很難描述:/ – Padmak