WebSocket AT Commands
AT+WSCFG: Set the WebSocket configuration.
AT+WSOPEN: Query/Open a WebSocket connection.
AT+WSSEND: Send data to a WebSocket connection.
AT+WSCLOSE: Close a WebSocket connection.
Introduction
Important
The default AT firmware does not support the AT commands listed on this page. If you need ESP32-C3 to support WebSocket commands, you can compile the ESP-AT project by following the steps in Compile ESP-AT Project Locally documentation. In the project configuration during the fifth step, make the following selections:
Enable
Component config
->AT
->AT WebSocket command support
AT+WSCFG: Set the WebSocket Configuration
Set Command
Command:
AT+WSCFG=<link_id>,<ping_intv_sec>,<ping_timeout_sec>[,<buffer_size>]
Response:
OK
or
ERROR
Parameters
<link_id>: ID of the WebSocket connection. Range: [0,2], which means that AT can support up to three WebSocket connections.
<ping_intv_sec>: WebSocket Ping interval. Unit: second. Range: [1,7200]. Default: 10, which means that WebSocket Ping packets are sent every 10 seconds by default.
<ping_timeout_sec>: WebSocket Ping timeout. Unit: second. Range: [1,7200]. Default: 120, which means that by default, if the WebSocket Pong packet is not received within 120 seconds, the connection will be closed.
<buffer_size>: WebSocket buffer size. Unit: byte. Range: [1,8192]. Default: 1024.
Notes
This command should be configured before AT+WSOPEN command. Otherwise, it will not take effect.
Example
// Set the ping interval to 30 seconds, ping timeout to 60 seconds, and buffer size to 4096 bytes for link_id: 0.
AT+WSCFG=0,30,60,4096
AT+WSOPEN: Query/Open a WebSocket Connection
Query Command
Command:
AT+WSOPEN?
Response:
When there is a connection, AT returns:
+WSOPEN:<link_id>,<state>,<"uri">
OK
When there is no connection, AT returns:
OK
Set Command
Command:
AT+WSOPEN=<link_id>,<"uri">[,<"subprotocol">][,<timeout_ms>]
Response:
+WS_CONNECTED:<link_id>
OK
or
ERROR
Parameters
<link_id>: ID of the WebSocket connection. Range: [0,2], which means that AT can support up to three WebSocket connections.
<state>: The state of WebSocket connections.
0: The WebSocket connection is closed.
1: The WebSocket connection is reconnecting.
2: The WebSocket connection is established.
3: Receiving WebSocket Pong timeout or reading connection data error, waiting for reconnection.
4: The WebSocket connection Received close frame from the server side and is sending close frame to the server.
<”uri”>: Uniform resource identifier of WebSocket server.
<”subprotocol”>: The subprotocol of WebSocket (refer to RFC6455 1.9 part for more details).
<timeout_ms>: Timeout for establishing a WebSocket connection. Unit: millisecond. Range: [0,180000]. Default: 15000.
Example
// uri parameter comes from https://www.piesocket.com/websocket-tester
AT+WSOPEN=0,"wss://demo.piesocket.com/v3/channel_123?api_key=VCXCEuvhGcBDP7XhiJJUDvR1e1D3eiVjgZ9VRiaV¬ify_self"
AT+WSSEND: Send Data to a WebSocket Connection
Set Command
Command:
AT+WSSEND=<link_id>,<length>[,<opcode>][,<timeout_ms>]
Response:
OK
>
This response indicates that AT is ready for receiving data from AT port. You should enter the data, and when the data length reaches the <length>
value, the transmission of data starts.
If the connection cannot be established or is disrupted during data transmission, the system returns:
ERROR
If data is transmitted successfully, the system returns:
SEND OK
Parameters
<link_id>: ID of the WebSocket connection. Range: [0,2].
<length>: Length of data to send. Unit: byte.
<opcode>: The opcode in the WebSocket frame sent. Range: [0,0xF]. Default: 1, which means text frame. For details about opcode, please refer to RFC6455 5.2 section.
0x0: continuation frame
0x1: text frame
0x2: binary frame
0x3 - 0x7: reserved for further non-control frames
0x8: connection close frame
0x9: ping frame
0xA: pong frame
0xB - 0xF: reserved for further control frames
<timeout_ms>: Send timeout. Unit: millisecond. Range: [0,60000]. Default: 10000.
AT+WSCLOSE: Close a WebSocket Connection
Parameters
<link_id>: ID of the WebSocket connection. Range: [0,2].
Example
// Close the WebSocket connection whose link_id is 0
AT+WSCLOSE=0