Skip to end of metadata
Go to start of metadata

С помощью sendData можно организовать произвольный обмен данными между любыми клиентами, подключенными к WCS-серверу.

Зная sessionId подключенного клиента, можно направить ему произвольный объект с данными.

Отправка данных на сервер методом sendData / OnDataEvent

Клиент может отправить произвольный объект с помощью вызова  прямого метода sendData() - шаг 1.

На web-сервере будет вызван REST-метод /OnDataEvent - шаг 2. В результате, клиент получит статус SESSION_STATUS.SEND_DATA_STATUS ACCEPTED - шаг 4.

 

Пример:

2

3

POST /rest/my_api/OnDataEvent HTTP/1.1
Accept: application/json, application/*+json
Content-Type: application/json;charset=UTF-8
User-Agent: Java/1.8.0_111
Host: 192.168.1.101
Connection: keep-alive
Content-Length: 218

{
    "nodeId":"Hw47CFMBEchVOpBMDr29IxjudnJ1sjOY@192.168.1.101",
    "appKey":"defaultApp",
    "sessionId":"/192.168.1.102:55839/192.168.1.101:8443",
    "operationId":"d1999750-fde9-11e6-9f1b-913210792931",
    "payload":{
        "message":"hello"
    }
}
}
HTTP/1.1 200 OK
Date: Tue, 28 Feb 2017 19:12:14 GMT
Server: Apache/2.2.15 (CentOS)
X-Powered-By: PHP/5.3.3
Content-Length: 220
Connection: close
Content-Type: application/json

{
    "nodeId":"Hw47CFMBEchVOpBMDr29IxjudnJ1sjOY@192.168.1.101",
    "appKey":"defaultApp",
    "sessionId":"\/192.168.1.102:55839\/192.168.1.101:8443",
    "operationId":"d1999750-fde9-11e6-9f1b-913210792931",
    "payload":{
        "message":"hello"
    }
}

Обработка ошибок

 Для включения такого поведения, нужно передать restOnError:FAIL в restClientConfig для метода OnDataEvent при установке соединения методом connect.

Клиент может отправить произвольный объект с помощью вызова  прямого метода sendData() - шаг 1. На web-сервере будет вызван REST-метод /OnDataEvent - шаг 2. В результате, клиент получит статус SESSION_STATUS.SEND_DATA_STATUS FAILED - шаг 4.

 

Пример:

2

3

POST /rest/my_api/OnDataEvent HTTP/1.1
Accept: application/json, application/*+json
Content-Type: application/json;charset=UTF-8
User-Agent: Java/1.8.0_111
Host: 192.168.1.101
Connection: keep-alive
Content-Length: 218

{
    "nodeId":"Hw47CFMBEchVOpBMDr29IxjudnJ1sjOY@192.168.1.101",
    "appKey":"defaultApp",
    "sessionId":"/192.168.1.102:25789/192.168.1.101:8443",
    "operationId":"d0149310-fdeb-11e6-9b58-9509528e5d66",
    "payload":{
        "message":"hello"
    }
}
HTTP/1.1 403 Forbidden
Date: Tue, 28 Feb 2017 19:26:30 GMT
Server: Apache/2.2.15 (CentOS)
X-Powered-By: PHP/5.3.3
Content-Length: 0
Connection: close
Content-Type: text/html; charset=UTF-8

Отправка данных подключенному клиенту методом /data/send

Можно отправить подключившемуся клиенту прямое сообщение REST API вызовом http://host:8081/rest-api/data/send

Для этого нужно передать следующий JSON-объект

{  
   "nodeId":"",
   "sessionId":"/192.168.1.102:25789/192.168.1.101:8443",
   "operationId":"",
   "payload":{  
      "test":"test"
   }
}

Здесь sessionId - идентификатор сессии подключенного клиента, может быть получен на бэкенд-сервере при обработке REST метода /connect.

В этом случае, подключенный клиент получит кастомный объект, в который вы можете поместить любые данные, например {"test":"test"}, как в примере выше.

Клиент получит событие SESSION_STATUS.APP_DATA