|
| 1 | +Mix.install([:mint_web_socket, :castore]) |
| 2 | +require Logger |
| 3 | + |
1 | 4 | # see https://websocket.org/echo.html |
2 | 5 | {:ok, conn} = Mint.HTTP.connect(:https, "echo.websocket.org", 443) |
| 6 | +Logger.debug("Connected to https://echo.websocket.org:443") |
3 | 7 |
|
| 8 | +Logger.debug("Upgrading to WebSocket protocol on /") |
4 | 9 | {:ok, conn, ref} = Mint.WebSocket.upgrade(conn, "/", []) |
5 | 10 |
|
6 | 11 | message = receive(do: (message -> message)) |
7 | 12 | {:ok, conn, [{:status, ^ref, status}, {:headers, ^ref, resp_headers}, {:done, ^ref}]} = |
8 | 13 | Mint.HTTP.stream(conn, message) |
9 | 14 | {:ok, conn, websocket} = Mint.WebSocket.new(conn, ref, status, resp_headers) |
| 15 | +Logger.debug("WebSocket established") |
10 | 16 |
|
11 | 17 | frame = {:text, "Rock it with Mint.WebSocket"} |
12 | | - |
| 18 | +Logger.debug("Sending frame #{inspect(frame)}") |
13 | 19 | {:ok, websocket, data} = Mint.WebSocket.encode(websocket, frame) |
14 | 20 | {:ok, conn} = Mint.HTTP.stream_request_body(conn, ref, data) |
15 | 21 |
|
16 | 22 | message = receive(do: (message -> message)) |
17 | 23 | {:ok, conn, [{:data, ^ref, data}]} = Mint.HTTP.stream(conn, message) |
18 | | -{:ok, websocket, [{:text, "Rock it with Mint.WebSocket"}]} = |
19 | | - Mint.WebSocket.decode(websocket, data) |
| 24 | +{:ok, websocket, frames} = Mint.WebSocket.decode(websocket, data) |
| 25 | +Logger.debug("Received frames #{inspect(frames)}") |
20 | 26 |
|
21 | | -{:ok, websocket, data} = Mint.WebSocket.encode(websocket, :close) |
| 27 | +frame = :close |
| 28 | +Logger.debug("Sending frame #{inspect(frame)}") |
| 29 | +{:ok, websocket, data} = Mint.WebSocket.encode(websocket, frame) |
22 | 30 | {:ok, conn} = Mint.HTTP.stream_request_body(conn, ref, data) |
23 | 31 |
|
24 | 32 | message = receive(do: (message -> message)) |
25 | 33 | {:ok, conn, [{:data, ^ref, data}]} = Mint.HTTP.stream(conn, message) |
26 | | -{:ok, websocket, [{:close, 1_000, ""}]} = |
27 | | - Mint.WebSocket.decode(websocket, data) |
| 34 | +{:ok, websocket, frames} = Mint.WebSocket.decode(websocket, data) |
| 35 | +Logger.debug("Received frames #{inspect(frames)}") |
28 | 36 |
|
29 | 37 | Mint.HTTP.close(conn) |
0 commit comments