I’ve release ReqWebSocket, a Req plugin for establishing WebSocket connections, using Mint.WebSocket.
resp =
Req.new(connect_options: [protocols: [:http1]], into: :self)
|> ReqWebSocket.attach()
|> Req.get!(url: "wss://echo.websocket.org/")
{:ok, resp, [text: _text]} = ReqWebSocket.parse_message(resp, receive do m -> m end)
{:ok, resp} = ReqWebSocket.send_frame(resp, :ping)
{:ok, resp, [pong: ""]} = ReqWebSocket.parse_message(resp, receive do m -> m end)
The main benefits I see with using a Req plugin for making WebSocket requests have to do with being able to use Req’s request, response, and error steps for things like settings headers, following redirects, and performing retries. In addition to that, this library adds some conveniences regarding decoding & encoding WebSocket frames.




















