Hi.
I was testing how to implement WebSockets using Pistache. The flow is making the handshake in HTTP/1.1, then switching the raw socket input data treating to a WebSockets implementation.
And I tried somethings like: to inherit the Http::Handler or the Rest::Private::RouterHandler, but the methods onConnection and onInput being private blocks from parent calling inside the custom class method.
Using a proxy method and receiving and existing object created by Router::handler(), casting to the base Tcp::Handler can work but needs to adjust the sizes that the Http::Handler holds because the Transport class write to the proxy class before calling onIput, something like this maybe:
*original = *this;
***In this case treating the original as Http::Handler, but this method is not thread safe and adding a mutex maybe impact the performance.
I was thinking about change the parser or change the onInput to perform polyformally but I can't change the Parser of a already connected Tcp::Peer.
I think I can not exactly implements webosckets outside Pistache's codebase or maybe changing some methods visibility in the PIstache's code.
One of my tests using inheritance and calling the parent, but I change the private to protected on the Http::Handler for this to work.
Hi. I was testing how to implement WebSockets using Pistache. The flow is making the handshake in HTTP/1.1, then switching the raw socket input data treating to a WebSockets implementation. And I tried somethings like: to inherit the Http::Handler or the Rest::Private::RouterHandler, but the methods onConnection and onInput being private blocks from parent calling inside the custom class method.
Using a proxy method and receiving and existing object created by Router::handler(), casting to the base Tcp::Handler can work but needs to adjust the sizes that the Http::Handler holds because the Transport class write to the proxy class before calling onIput, something like this maybe:
*original = *this;
***In this case treating the original as Http::Handler, but this method is not thread safe and adding a mutex maybe impact the performance.I was thinking about change the parser or change the onInput to perform polyformally but I can't change the Parser of a already connected Tcp::Peer.
I think I can not exactly implements webosckets outside Pistache's codebase or maybe changing some methods visibility in the PIstache's code.
One of my tests using inheritance and calling the parent, but I change the private to protected on the Http::Handler for this to work.
Handler set
Route handshake minimal code to study the handler question
Incomplete WebSocket protocol reading: