WebSocket API
WebSocket Overview
SymetryML supports the use of WebSocket technology on a subset of its API. This API can be used when lower latency is needed. Each WebSocket call contains a set of 3 pieces of information:
The header length
The headers, which are used to authenticate the request.
The message payload.
The message are string formatted using the following protocol
<Header-length>,<header><payload>
ex:65,{headers=['some date','some md5','some authorization','some customer id'],extraKeys={}}{PAYLOAD}
The following table describes this information.
Header Length
Length of the header section.
Header
A JSON string containing 2 pieces of information - header[4] = an array of 4 string used for authorization.
- date
- md5
- authorization hash code.
- customer id
- extraKeys = contains extra information that depends on the WebSocket endpoint invoked. This Header field is mandatory on the first WebSocket message only.
WebSocket Payload
A JSON string representing a dataframe. See the DataFrame for more details
About WebSocket Authorization
With WebSocket, the following string must be used to create the Authorization hash code.
Item
Description
Authorization
Signature
Signature
Base64( HMAC-SHA2(UTF-8-Encoding-Of( StringToSign ) ) );
StringToSign
Content-MD5 + "\n" SymetryML-Secret-Key + "\n" Sym-Date Header + "\n" SymetryML-key-Id + "\n" RequestBody + "\n" ServicePath + "\n" extraKeys
Sym-Date format
See the section Symetry Date Header
ServicePath
Path of the URL to be invoked (for instance /symetry/ws/predict).
extraKeys
Each extra key should be included individually on a separate new line. See example below for details.
Example of WebSocket String to Sign
H47KwjgTU5G7v8BJS+ttgg== + '\n'
<SECRETKEY> + '\n'
2014-10-24 17:24:04 + '\n'
c1 + '\n'
{"attributeNames":["sepal_length","sepal_width","petal_length"],"data":[["4.3","3","1.1"]],"attributeTypes":["C","C","C"]} + '\n'
/symetry/ws/predict + '\n'
irisTest + '\n'
testLDA
Learning Using WebSocket
This API function call allows users to learn a dataframe using WebSocket services.
URL
ws://SERVER_HOST/symetry/ws/learn
Extra Parameter
Index
Short Description
Description
0
SymetryML Project ID
The name of the project to learn the data.
WS Response
HTTP Status Code
HTTP Status Message
Description
200
OK
Success.
Sample WS Request
Request URL:
ws://charm:8080/symetry/ws/learn
Request Message:
{"headers":["2014-10-24 14:28:03","PuAtwbvTrwlX8JQHWvtv7Q\u003d\u003d","Rz/EO7GXX/KE2Jj52+kePmIrudA\u003d","c1"],"extraKeys":["irisTest"]}-289907289{"attributeNames":["sepal_length","sepal_width","petal_length","petal_width","sepal_lengt_b1","sepal_lengt_b2","sepal_width_b1","sepal_width_b2","petal_length_b1","petal_length_b2","petal_width_b1","petal_width_b2","Iris_setosa","Iris_versicolor","Iris_virginica"],"data":[["4.3","3","1.1","0.1","1","0","0","1","1","0","1","0","1","0","0"],["4.8","3","1.4","0.1","1","0","0","1","1","0","1","0","1","0","0"],["4.9","3.1","1.5","0.1","1","0","0","1","1","0","1","0","1","0","0"],["4.9","3.
(...)
5","0","1","0","1","0","1","0","1","0","0","1"],["7.2","3.6","6.1","2.5","0","1","0","1","0","1","0","1","0","0","1"]],"attributeTypes":["C","C","C","C","B","B","B","B","B","B","B","B","B","B","B"]}
Forgetting Using WebSocket
This API function call allows users to forget a DataFrame of data using WebSocket services.
URL
ws://SERVER_HOST/symetry/ws/forget
Extra Parameter
Index
Short Description
Description
0
SymetryML Project ID
The name of the project to learn the data.
WS Response
HTTP Status Code
HTTP Status Message
Description
200
OK
Success.
Predicting Using WebSocket
This API function call allows users to predict using WebSocket services.
URL
ws://SERVER_HOST/symetry/ws/predict
Extra Parameter
Index
Short Description
Description
0
SymetryML Project ID
The name of the project to learn the data.
1
Model Id
The model name to use to make predictions.
WS Response
On success this WebSocket call will return a JSONResponseClient containing a KSVSMap entity. The format of this response is the same as with the SymetryML REST prediction API described in Prediction API.
Sample WS Request
Request URL
ws://charm:8080/symetry/ws/predict
Request Message:
{"headers":["2014-10-24 17:17:58","H47KwjgTU5G7v8BJS+ttgg\u003d\u003d","/Xd/JypB3rDQ+1BVaZRm6n35kt0\u003d","c1"],"extraKeys":["irisTest","testLDA"]}-289907289{"attributeNames":["sepal_length","sepal_width","petal_length"],"data":[["4.3","3","1.1"]],"attributeTypes":["C","C","C"]}
Response:
{"statusCode":"OK","statusString":"OK","values":{"KSVSMap":{"values":[{"res":"1","normZ":"0.2929126883636288","resZ":"-0.4559922893809558","z0":"-3.840891864408894","z1LTz0":"false"}]}}}
Last updated