Clientmessages

Da Serverpushes mit PHP nicht direkt realisierbar sind habe ich mir überlegt wie ich Daten vom Server übertragen kann ohne eine konkrete Anfrage durch den Client. Das JsonRPC Protokoll bietet mir da eine sehr gute Möglichkeit, sind doch die Angaben für den eigentlichen Request und der Response in erweiterbaren Json Objekte untergebracht.

Somit erweitert der Client das Requestobjekt um Zeitangaben womit der Server ermitteln kann welche Messages sich seit dem letzten Request angesammelt haben und der Server erweitert das Responseobjekt um diese Messages.

POST Request an den Server (http://2x.dragonjsonserver.de/jsonrpc2.php):

{
    "id":1,
    "method":"Application.ping",
    "params":{},
    "clientmessages":{
        "from":%timestamp%,
        "to":%timestamp%
    }
}

Response:

{
    "result":null,
    "id":"1",
    "jsonrpc":"2.0",
    "clientmessages":{
        "%key%":[%data%,%data%],
        "%key%":[%data%,%data%]
    }
}

Somit lassen sich am Server geänderte Daten mit dem nächsten Request im Hintergrund übertragen und der Client kann entsprechend darauf reagieren.