Возможно ли создать подписку на веб-сайты из браузера? Мы используем функцию ветки/1181_websockets branch, git version 5ca6770aa401b52a31293fdcef4a9743fb1de2c4.Подписки через websockets в Orion
Мы создали PoC, пытающийся подписаться на браузер через веб-сайты. Мы попытались подключить некоторый JS-код, запущенный в браузере, к URL-адресам подписки. Соединение было установлено, но orion разбился при отправке данных от клиента через сокет. Поддерживается ли этот вариант использования? У вас есть рабочий пример? Код JS:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<button id="send" type="button" name="button">send</button>
<script type="text/javascript">
var payload = `{"description": "One subscription to rule them all",
"subject": {
"entities": [{
"idPattern": ".*",
"type": "Room"
}],
"condition": {
"attrs": ["temperature"],
"expression": {
"q": "temperature>40"
}
}
},
"expires": "2016-04-05T14:00:00.00Z",
"throttling": 5
}`;
var ws = new WebSocket('ws://orion-url:9010/v2/subscriptions', 'ngsiv2-json');
var button = document.getElementById('send');
button.addEventListener('click', function(event) {
ws.send(payload)
});
</script>
</body>
</html>
В качестве альтернативы, мы попытались создать подписку с помощью API REST, прося Orion сообщить нам через WebSockets. Мы выложили следующее: JSON
{
"description": "One subscription to rule them all",
"subject": {
"entities": [
{
"idPattern": ".*",
"type": "Room"
}
],
"condition": {
"attributes": [
"temperature"
],
"expression": {
"q": "temperature>40"
}
}
},
"notification": {
"callback": "ws://my-websocket-listener:8081"
},
"expires": "2016-04-05T14:00:00.00Z",
"throttling": 5
}
Процесс подписки терпит неудачу и Orion возвращает код 422 состояния с сообщением:
{
"error": "BadRequest",
"description": "Invalid URL"
}
ли мы делаем какую-либо ошибку в запросе подписки? Поддерживается ли этот вариант использования?
Спасибо!
функция/1181_websockets является экспериментальная ветвь и, в некотором смысле, «движущаяся картина». Чтобы узнать, какая именно версия CB у вас есть (из вывода 'contextBroker --version'), вы могли бы изменить свой вопрос, чтобы включить эту информацию? Важная часть - гиташ. Благодаря! – fgalan
Спасибо за ваш ответ. Я отредактировал свой вопрос с этой информацией. –