Ik ben wat aan het experimenteren met Websockets in PHP. Alleen niet op Client <=> Server niveau, eerder (XML-RPC/Websocket)Server <=> (XML-RPC/Websocket)Client <= Website
Even een concrete omschrijving. De website is voorzien van een XML-RPC Client die met een XML-RPC Server via Websockets de XML-RPC calls communiceert. Deze XML-RPC calls bevatten opdrachten, bijvoorbeeld voeg dit Nieuwsartikel object toe.
Het opzetten van de communicatie via Websocket tussen de XML-RPC client en server is geen probleem. Dat gaat prima. Omdat de Websocket verbinding werkt middels een eindeloze while-loop (altijd openstaande verbinding) is het niet mogelijk om na het starten van de while-loop nog code uit te voeren. Hierom draait de WebsocketClient middels een background proces. Om de XML-RPC call op de Websocket verbinding te krijgen gebruik ik IPC (Inter-Proces Communication). Dus de Websocket client heeft een "backdoor" via een interne socket waar de XML-RPC class zijn call naar toe kan sturen. Deze wordt opgepakt en verzonden over de Websocket naar de XML-RPC Server verstuurd, die deze ontvangt, verwerkt en zijn respons stuurt.
Het laatste stuk loop ik nu op vast. Hoe kan ik de XMLRPC-Response van de WebsocketServer weer op de plek van aanvragen krijgen (de XML-RPC client).
De WebsocketClient bestaat uit 3 gedeelten namelijk:
1. Het openen van de Websocket verbinding
2. Het draaien van een IPC-proces zodat de XML-RPC client zijn calls via de Websocket kan versturen
3. Het kunnen ontvangen van de XML-RPC (server) calls via de Websocket verbinding (while-loop)
Op dit moment kan ik alleen 2 of 3 draaien omdat je anders in een blocking toestand terecht komt.
Ik heb al gekeken naar naar PHP pthread, alleen ik vind de voorbeelden te mager om hier iets mee te kunnen. Daarbij blijf ik met het proberen van het opzetten van die threads tegen een blocking-event aanlopen.
Ik heb zelf o.a het volgende bedacht. De while loop waarmee ik aan het verzenden ben in de WebsocketClient ook voorzien van een optie om te ontvangen. Alleen hoe krijg ik dan de data die ik wil verzenden in die eindeloze while loop? Dit is immers een blocking-event.
Ik ben opzoek naar iemand met de gouden tip!
Even een concrete omschrijving. De website is voorzien van een XML-RPC Client die met een XML-RPC Server via Websockets de XML-RPC calls communiceert. Deze XML-RPC calls bevatten opdrachten, bijvoorbeeld voeg dit Nieuwsartikel object toe.
Het opzetten van de communicatie via Websocket tussen de XML-RPC client en server is geen probleem. Dat gaat prima. Omdat de Websocket verbinding werkt middels een eindeloze while-loop (altijd openstaande verbinding) is het niet mogelijk om na het starten van de while-loop nog code uit te voeren. Hierom draait de WebsocketClient middels een background proces. Om de XML-RPC call op de Websocket verbinding te krijgen gebruik ik IPC (Inter-Proces Communication). Dus de Websocket client heeft een "backdoor" via een interne socket waar de XML-RPC class zijn call naar toe kan sturen. Deze wordt opgepakt en verzonden over de Websocket naar de XML-RPC Server verstuurd, die deze ontvangt, verwerkt en zijn respons stuurt.
Het laatste stuk loop ik nu op vast. Hoe kan ik de XMLRPC-Response van de WebsocketServer weer op de plek van aanvragen krijgen (de XML-RPC client).
De WebsocketClient bestaat uit 3 gedeelten namelijk:
1. Het openen van de Websocket verbinding
2. Het draaien van een IPC-proces zodat de XML-RPC client zijn calls via de Websocket kan versturen
3. Het kunnen ontvangen van de XML-RPC (server) calls via de Websocket verbinding (while-loop)
Op dit moment kan ik alleen 2 of 3 draaien omdat je anders in een blocking toestand terecht komt.
Ik heb al gekeken naar naar PHP pthread, alleen ik vind de voorbeelden te mager om hier iets mee te kunnen. Daarbij blijf ik met het proberen van het opzetten van die threads tegen een blocking-event aanlopen.
Ik heb zelf o.a het volgende bedacht. De while loop waarmee ik aan het verzenden ben in de WebsocketClient ook voorzien van een optie om te ontvangen. Alleen hoe krijg ik dan de data die ik wil verzenden in die eindeloze while loop? Dit is immers een blocking-event.
Ik ben opzoek naar iemand met de gouden tip!
MacBook Pro 2023 [14-inch, M2 Pro, 32GB RAM, 512GB]