On Fri, 2 Jul 2021, Felipe Gasper wrote:

Thanks!

The send interface could look much like curl_easy_send():

curl_ws_send( easy, buffer, buflen, &sent, enum curl_ws_message_type type, enum curl_ws_flags flags )

Or perhaps with the type and flags just made as a single bitmask.

Most WS libraries that I’ve seen implement reception as a callback, with a separate control to pause reception of incoming messages.

I won't say that's wrong, but I don't see how a callback helps with this API.

curl_ws_recv() could just be made to not return until the entire packet can be returned. Or with an option to return a partial one.

An area for consideration is how to deal with the buffer (size). I mean, if it wants to wait for a full packet to arrive I suppose it can be large and it might not fit in the user-provided buffer, so the application would need to call it multiple times do drain the data.

I took the liberty of jotting down some of these API thoughts in the wiki page. Still incomplete and not really functional, but I figured it could help to stir up our collective minds..

  https://github.com/curl/curl/wiki/WebSockets#api

--

 / daniel.haxx.se
 | Commercial curl support up to 24x7 is available!
 | Private help, bug fixes, support, ports, new features
 | https://www.wolfssl.com/contact/
-------------------------------------------------------------------
Unsubscribe: https://cool.haxx.se/list/listinfo/curl-library
Etiquette:   https://curl.se/mail/etiquette.html

Reply via email to