Websocket Client

by Synthiam

A client to send and receive data to a WebSocket.

How to add the Websocket Client robot skill

  1. Load the most recent release of ARC (Get ARC).
  2. Press the Project tab from the top menu bar in ARC.
  3. Press Add Robot Skill from the button ribbon bar in ARC.
  4. Choose the Communication category tab.
  5. Press the Websocket Client icon to add the robot skill to your project.

Don't have a robot yet?

Follow the Getting Started Guide to build a robot and use the Websocket Client robot skill.

How to use the Websocket Client robot skill

A client to send and receive data to a WebSocket, assign the response to a variable, and execute scripts.

User-inserted image

Use ControlCommand to open a connection to a remote host and send data. The received data will be assigned to a variable and the specified script will execute. Once a connection is established to the server using the ControlCommand Open, your program may now send messages to the server via the ControlCommand Send. Any messages received from the server are stored in a variable and the script is launched.

User-inserted image

Configuration Menu User-inserted image

  1. The Response Variable will hold the text response message that is sent from the server.

  2. Response Script will be executed for every response that is sent from the server. Within this script, the response message is available in the Response Variable. By default, an example script will speak the response data.

  3. The Connection Status Variable holds a true or false bool regarding the status of the connection to the server.

  4. Enable Debug will display the full response message in the log window. This will consume unnecessary CPU and memory in a production environment and is only for debugging. By default, this is checked.

Open Connection This example command will create a connection to the public WebSocket echo server for testing. Any data sent to this web socket server will be echoed back.

ControlCommand("WebSocket Client", "Open", "ws://");

Send Data Send test data once the connection has been established. You can continually send data as needed. When data is received from the server, the response will be assigned to a variable and the script will execute. By default, the script will speak the response.

ControlCommand("WebSocket Client", "Send", "Text to send");


Upgrade to ARC Pro

Unlock the true power of automation and robotics by becoming a proud subscriber of Synthiam ARC Pro.


Could you please provide an option to disable the Voice reading of the variables.  Thanks

#2   — Edited

Default script is to speak the variable when the robot skill is first added. User-inserted image

However, it is something you can easily change. ARC robot skills have config buttons for configuring settings. Follow these steps...

  1. Load ARC

  2. add this robot skill

  3. press the config button on this robot skill (it’s three little dots next to the close and help) User-inserted image

  4. press the Response Script button (This script is executed for every response message received from the server) User-inserted image

  5. change the default code or remove it. This is a necessary step because you’ll always need to handle incoming messages. User-inserted image

  6. Press SAVE to save the project with the configured skill


Thanks DJ, I missed that. Web socket will be very useful for doing a lot of things. Nice skill.


I just downloaded latest version but it no longer appears to work. Example if I just connect to a test server, I get an error it can no longer send.  ControlCommand("WebSocket Client", "Open", "ws://"); ControlCommand("WebSocket Client", "Send", "{'test'}");

Start ControlCommand Error for 'WebSocket Client' sending 'send'. Not connected Done (00:00:00.0091077)

#5   — Edited

Maybe try putting some time to let the connection actually happen. Web sockets are a little weird that way...

ControlCommand("WebSocket Client", "Open", "ws://");
ControlCommand("WebSocket Client", "Send", "{'test'}");


OK I was using two seperate scripts funny that worked but not that one or my dog.  strange


I'll make the OPEN wait until the connection is either completed or times out. I'll post an update - stay tuned


Updated to not require a sleep after connecting. It will internally wait for the connection or throw a timeout error


ok getting data again. Thanks.  Still haven't gotten it to actually accept a command yet but one step forward


Bugfix when a message is received while ARC is closing