> On Jun 23, 2021, at 11:23 AM, Daniel Stenberg via curl-library 
> <curl-library@cool.haxx.se> wrote:
> 
> On Tue, 22 Jun 2021, Weston Schmidt via curl-library wrote:
> 
>> I'm interested in feedback or suggestions for what/how to define a good 
>> websocket API that complements libcurl.
> 
> My very simple idea on how it could be added to the API:
> 
> 1. We add another value to set CURLOPT_CONNECT_ONLY to (2). If this is used, 
> and the URL is "http(s)://" then libcurl could "bootstrap" into a websocket 
> connection.
> 
> 2. Once it is completed, we could have the application extract the socket (to 
> have something to wait on) and then use curl_easy_recv() and curl_easy_send() 
> to receive and send websockets data over that connection.
> 
> What would this be missing?

There’d be want, IMO, for interfaces that differentiate sending/receiving full 
messages versus per-frame. (And, of course, sending text versus binary, *maybe* 
flexibly enough to accommodate potential new message types were that ever to 
happen.) And callbacks for multi-mode?

Also the data from the close frame would probably be available via some new 
CURLINFO_* constants?

A couple other notes (having written a full WS library and a Perl binding for 
another):

- curl_easy_recv() would need either to poll under the hood or to do a socket 
timeout so that curl could send a ping if the local ping timeout happens midway 
through the recv.

- WebSocket compression is a per-message affair: one message can be compressed 
while the next is uncompressed.

- WS compression is also tunable; ideally those parameters should be 
configurable. (More specifically: WS’ deflate compression is tunable; any 
future compression schemes would probably also be.)

I’m excited to see this!

cheers,
-Felipe
-------------------------------------------------------------------
Unsubscribe: https://cool.haxx.se/list/listinfo/curl-library
Etiquette:   https://curl.se/mail/etiquette.html

Reply via email to