- Added optional automatic replies to incoming PING messages, enabled by default
- Added auto_ping_strategy argument to ws_connect/ws_create_server that controls when pings are sent
- Added new topic guides to the documentation
- Added WSTransport.measure_roundtrip_time method + example
- Log disconnect due to no PONG reply on INFO level
- Make WSFrame string representation more descriptive
- Fix minor mistakes in documentation
- Added optional automatic ping-pong mechanism to detect broken connection
- Added an option to WSTransport.disconnect to disconnect immediately without flushing send buffers
- Re-structured documentation, added 'Topic guides' section
- Change WSUpgradeRequest.headers type from Dict to CIMultiDict
- Fix: ws_connect is ignoring URI query parameters
- Fix: WSUpgradeRequest.version field is always None
- Fix: picows wasn't working on windows with asyncio and python<=3.10 because data_received callback gets bytearray object instead of bytes.
- Fix: ws_connect was throwing TimeoutError on handshake timeouts, changed to asyncio.TimeoutError just to be consistent with the rest asyncio behaviour
- Optimization: Internal memory buffers were calling PyMem_Realloc too often
- Optimization: use direct send syscall and forward data to underlying transport only on EWOULDBLOCK.
- Optimization: disable usage of BufferedProtocol because profiler showed that it is slower than regular data_received
- Release binary wheels along with source dist
- Add fin and rsv1 parameters to send and send_reuse_external_buffer methods
- Cleanup API reference
First non-beta release