2017-08-01 47 views
1

所以每個玩家都有自己的網頁,並帶有一個Javascript chessboard的GUI界面,他們可以點擊拖動棋子。當一個玩家移動時,我需要另一個玩家的棋盤來更新這個移動。我明白了當一名球員進行動作時,我可以將動作發送到服務器,以便其他球員可以請求動作,但問題是在動作完成時向另一名球員發出信號,以便他們知道何時請求從服務器的新舉措,並使用它來更新其頁面上的JavaScript。什麼是一個很好的技術來做到這一點?用Django製作兩個棋手應用程序 - 需要玩家棋盤來更新對手的動作

+0

幾種方法將使用websockets或WebRTC。後者是點對點通信。兩者都是實時更新 – charlietfl

+0

感謝您的提示。有沒有機會知道一個好的資源可以解釋如何更詳細地使用它? – Vik78

+0

易於在網絡上研究這兩種技術 – charlietfl

回答

1

您的第一個不需要任何複雜軟件的選項就是輪詢。比方說,有玩家A和玩家B正在下棋。您可以讓玩家A和B的客戶端在任何時間段過去時要求服務器進行更新。這不是最優化的解決方案,但它會起作用。

喜歡的東西:

function callServerAndWait500Milisecounds(){ 
    setTimeout(function(){ 
     $.ajax({ 
     url: "/your_url_to_server?playerId=" + playerId, 
     method: "GET", 
     success: function(data){ 
      //analize data from server and do something with it 
     } 
     }); 
    }, 500) 
} 
$(document).ready(function(){ 
    //code that fires when client side is loaded 
    setTimeout(function(){callServerAndWait500Milisecounds();}, 500); 
}); 

如果您正在使用C#MVC的服務器端,那麼你可以使用SignalR庫。鏈接:https://www.asp.net/signalr。這個庫允許客戶端調用服務器上的某些東西,最重要的是它允許服務器在客戶端使用JavaScript編寫的函數。這個庫很棒,它可以爲你管理很多東西,比如管理用戶組(如果玩家A和玩家B玩,玩家C玩家D玩,那麼A應該只能和B通信等)。

希望它有幫助!