Sto progettando un server di gioco distribuito che supporterà sia i browser che i client UE4 (si spera sia su HTTP per semplicità) e continuo a sbattere la testa contro REST e facendo backflip semantici per ottenere la logica che voglio mettere in atto. / p>
Per alcune cose, REST ha perfettamente senso: ottieni un elenco di giochi, crea un nuovo gioco, ottieni metadati su un gioco specifico, ecc.
Ma per altre cose, il cliente vuole solo generare un "evento" - "Mi sono unito al gioco X", "Ho eseguito l'azione B nel gioco X", o ricevere la notifica che si è verificato un "evento" - "giocatore A si è unito al gioco in cui ti trovi "," il giocatore A ha eseguito l'azione X nel gioco in cui ti trovi ", ecc. All'interno del mondo REST, puoi fare questo lavoro (credimi, ci ho provato) ma implica sempre alcune peculiarità che distorcono il modello del dominio per adattarlo alla semantica di REST o distorcono REST per adattarlo alla semantica del modello di dominio.
Esiste qualche framework o paradigma per la creazione di un tale modello di pubblicazione / sub che supporti l'interazione dal browser? La mia idea attuale è quella di collegare un websocket - > Proxy MQ e utilizzare un server MQ come bus eventi, ma il problema è che sto trovando difficile trovare tali proxy e non sono sicuro di quali siano effettivamente le implicazioni di sicurezza di questa architettura (in particolare sono preoccupato per protezione contro gli attacchi DDoS, in cui più utenti distribuiti possono inviare spam al MQ e saturarlo, causando l'errore dell'intero sistema).
Anche i Websocket non sono preferibili in quanto, mentre UE4 supporta HTTP out of the box, non sono a conoscenza del fatto che abbia un supporto websocket quindi dovrei trovare e collegare una libreria websocket C ++ al client di gioco e suona già dolorosa.