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 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