簡體   English   中英

如何使用PHP,MySQL DB和JavaScript模擬點對點通信通道?

[英]How can I simulate a peer-to-peer communications channel using PHP, MySQL DB and JavaScript?

我面臨的挑戰是通過僅使用標題中提到的技術來模擬網站的兩個用戶(例如游戲網站)之間的通信信道。

最近我開發了一個在線國際象棋網站,其背后的想法是讓用戶有機會玩“現場”比賽,而不僅僅是漫長的游戲你會采取行動,然后在1-15天內回來看看如果你的對手有回應。 此游戲引擎的工作方式意味着向服務器發送異步請求,既可以更新與游戲相關的信息(如果您進行移動),也可以驗證是否有任何更改(如果您正在等待對手移動)。

為了更好地解釋這一點......輪到它的玩家(當然是瀏覽器)發送異步。 請求更新游戲信息,確切地說是他移動的時候。 同時,對手發送PERIODIC請求,“詢問”是否有任何變化。 如果有任何更改,角色會在電路板更新后切換。

定時器是引擎功能的背后,所以我的問題是:你如何在兩個玩家之間模擬一個com通道,同時盡量不對服務器施加過多的壓力,同時讓游戲更新速度與可能,以保持“生活”的感覺。 這在1分鍾的比賽中是最重要的(可用類別之一)。 因為在這種情況下,請求非常頻繁地發生(至少1秒)。 但服務器響應可能會延遲,當同時有數百個游戲可用時,服務器上會有很多壓力......所以你看到了我的問題。

如果你有任何好主意,我期待着你們的回復並挑選你的大腦:)

干杯! 安德烈

PS:如果您想嘗試它,名稱是e-chess960.com

你想要構建一個套接字服務器。 node.js將是一個很好的基於javascript的庫,用於套接字服務器。 每個客戶端都會創建一個到套接字服務器的套接字連接,然后當客戶端向套接字服務器發送消息時,套接字服務器可以立即將消息發送回其訂閱者,而不必將其存儲在任何地方。

套接字服務器需要套接字訪問,這通常需要vps而不是共享服務器。

要使解決方案有效,您需要客戶端能夠創建到服務器的套接字連接。 一些瀏覽器已經可以作為html5的一部分,但還不是全部。 您也可以使用Flash作為創建套接字連接的方法。

你真正想要的不是每秒都拉服務器,而是保持連接打開並使用觀察者模式將更新分發給特定客戶端(換句話說:推送而不是拉動)。 這樣,您的服務器資源就不會被每個第二個客戶端的新連接所淹沒。 實現這一目標的庫是Comet Library。 查看這個漂亮的教程,了解示例應用程序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM