2013-08-05 46 views
4

有一個使用socket.io作爲其'API'的網站。從本質上講,任何人都可以下載網站的源代碼並修改它以使自己的客戶端沒有什麼困難。例如,我有這樣的六個客戶端,它們都運行相同的客戶端腳本。該腳本託管在我自己的域中,而不是具有socket.io API的域。處理socket.io客戶端的PHP/C++服務器

我希望能夠跟蹤誰連接,並保持一定的數據。例如,如果每個客戶有0.5個餘額,我希望他們能夠知道由於服務器而總共有3個餘額。

我能想到的最明顯的方法是做AJAX加上對MySQL的調用來跟蹤事情,但看起來很囉嗦。

我也可以做CURL,但是這在技術上是具有挑戰性的。

是否有簡單而直接的方式來簡單地從六個不同的socket.io客戶端總算餘額並將信息發回給他們?

+2

恐怕最直接的方法就是在Node.js中完成它。有其他語言的Socket.IO客戶端,但它們有時會落後,並不總是執行完整的協議。 Socket.IO爲其自己的協議使用了一堆「傳輸」。從AJAX到Websockets的一切。你只需要一個交通工具進行交流,但這不是一個小任務。 – Brad

+0

[使用PHP與Socket.io]可能的重複(http://stackoverflow.com/questions/6398887/using-php-with-socket-io) – SheetJS

+0

你可能想看看[React](http:// reactphp.org/)。這是一個處理websocket的PHP庫。我還沒有玩,但它看起來很有希望,我聽到很棒的東西。 – stevenwadejr

回答

0

在你的PHP後端使用像APC或memcached這樣的對象緩存層作爲共享內存。這樣,您可以維護不同實例/客戶端之間的同步。

請記住,您將不得不實施一些多處理安全性,因爲這不是線程安全的。

例如:

/* PHP application 1: */ 
(($value = apc_fetch("IncrementValue")) != FALSE) ? apc_store("IncrementValue",$value+1) : apc_store("IncrementValue",1); 

另可再接入它,就像這樣:

echo apc_fetch("IncrementValue"); 

它是一種快速,儘管粗暴的方式在會話之間通信。

相關問題