Ich programmiere ein Multiplayer-RPG-Spiel mit Unity, und in der Kampfszene muss der Spieler bestimmen, welchen Angriff er oder sie benutzt. Wenn der Spieler den Angriffsknopf drückt, sendet der Spieler eine Post-Anfrage an den Server und der Server macht die obligatorischen Überprüfungen, ob die Post-Anfrage legal ist oder nicht. Wenn die Anfrage legal ist, markiert der Server einen Datenbankwert "an", oder um genau zu sein es ist "1" von "0", das heißt beispielsweise "attack_determined".Die Überprüfung eines Datenbankwerts pro 5 Sekunden ist teuer, mit vielen Benutzerzahlen wie 10000 oder mehr?
Das Problem ist, ich muss HTTP-Anfrage erneut, um diesen Wert zu überprüfen. Es gibt maximal 6 Charaktere in einem Gefecht und wenn alle Leute überprüfen wollen, ob attack_determined 0 oder 1 ist, werden 6 Anfragen pro Angriff angefordert. Und ich möchte nicht darüber nachdenken, ob die Benutzeranzahl beispielsweise auf 10000 erhöht wird. Es wäre so schwierig, diese Anfragen für den VPS-Server, den ich verwende, zu bearbeiten. Gibt es eine Möglichkeit, die Anzahl der Anfragen zu verringern? Ich möchte keine Sockets verwenden, ich dachte daran, Sessions oder Memcache zu verwenden. Ich verwende PHP für die Serverseite und C# für die Unity-Clientseite.
Dies scheint nur eine wirklich schlechte Möglichkeit, etwas interaktives zu gestalten. –
Ich stimme @DavidSchwartz zu, dass du deine Architektur überdenken musst. – Eimsas
Web-Sockets ist * ein geeigneter Ansatz *, wenn Sie etwas Web-ähnliches haben (das eine In-Browser-Benutzeroberfläche sein könnte, oder eine Client-Anwendung, die http anstelle eines dedizierten Socket-Protokolls verwendet). Es skaliert sehr gut für das, was Sie versuchen zu tun (und viel höher; unser Web-Socket-Server hat derzeit 450.000 offene Verbindungen). Http Umfrage alle paar Sekunden: würde uns sofort töten. Wenn Sie all Ihren anderen Traffic auf dieselbe Web-Socket kombinieren: noch besser. –