Tutorial for the Edge SDKs > What is the ThingWorx AlwaysOn Protocol?
  
What is the ThingWorx AlwaysOn Protocol?
First of all, the ThingWorx AlwaysOn protocol is based on the WebSockets protocol, which "upgrades" HTTP to permit it to retain its connection and exchange binary information. . Your devices can use the WebSockets protocol (denoted as ws:) during your upgrade request, or for secure communications, the WebSockets Secure protocol (denoted as wss:). For example:
GET ws://websocket.example.dcom/HTTP/1.1
Origin: http://example.com Connection: Upgrade
Host: websocket.example.com
Upgrade: websocket

HTTP/1.1 101 WebSocketProtocol Handshake
Date: Web, 16 Oct 2013 10:07:34 GMT
Connection: Upgrade
Upgrade: WebSocket
If it is just WebSockets, why do you need an SDK? These SDKs provide versatile and powerful sets of features. Here are some of those features (with the SDKs that support them in parentheses):
Primitive persistence (all)
Service execution (all)
Subscriptions to property changes (all)
Offline operation (C SDK, .NET SDK, WS EMS only)
Tunneling (C SDK, .NET SDK, Java SDK, WS EMS only)
File transfers (C SDK, .NET SDK, Java SDK, WS EMS only)
Software Content Management support (C SDK, .NET SDK, WS EMS only)
Connection monitoring and duty cycle (all)
What Languages Are Supported?
All ThingWorx Edge SDKs use the AlwaysOn protocol for communications with the ThingWorx platform. The ThingWorx Edge SDKs consist of the following SDKs:
ThingWorx Edge C SDK
ThingWorx Edge Java SDK
Thingworx Edge .NET SDK
ThingWorx Edge Android SDK
ThingWorx Edge iOS SDK
As shown in the previous section, not all AlwaysOn SDKs are exactly the same. That said, they all allow you to perform the same basic tasks. The C SDK comes with the source files to allow you to compile it for your devices. The rest of this help section will focus on the C and Java SDKs.