Живая потоковая передача данных JSON с помощью JavaScript - PullRequest
0 голосов
/ 12 февраля 2019

Я хочу передавать данные телеметрии в прямом эфире, отформатированные в формате JSON, из веб-сокета в браузер с использованием JavaScript.Веб-сокет создается на сервере XXXX с использованием собственного c и оболочки websocketd на порту 8080. Клиент (IP: YYYY) должен подключиться к тому же серверу через https через порт 80 (https://X.X.X.X:80)) и получить код JavaScriptчто говорит о необходимости получения данных из веб-сокета в прямом эфире (ws: // XXXX: 8080) и обновления некоторых значений на веб-сайте значениями из этого потока.

Данные в качестве примера могут выглядеть следующим образом:

{
        "name of system": {
                "RSSI": {
                        "rssi": "0",
                        "adc1": "0.00",
                        "adc2": "0.00",
                        "rxBatt": "0.00",
                        "swr": "0"
                },
                "ASS": {
                        "airspeed": "0.00"
                }
        }
}
{...}
and so on...

Этот кадр должен повторяться, например, с интервалом 500 мс, и отправляется без пробелов и символов новой строки.

Я попытался проанализировать это уже с помощью JSON.parse (), но консоль браузера возвращает следующую ошибку: "Uncaught SyntaxError: Неожиданный токен *" или "Неожиданный токен {". Это из-за неправильно реализованного кода JSON, хотя я проверял его несколько раз?

Мой вопрос сейчас: действительно ли JSON.parse способенlivestreaming? Если нет, то есть ли библиотеки, или мне лучше с совершенно новым решением?

BestС уважением

1 Ответ

0 голосов
/ 12 февраля 2019

Если синтаксический анализатор JSON встречает звездочку, как предложено Unexpected token *, то ваш JSON искажен, поскольку это недопустимый символ в JSON (за пределами строки).

Я бы порекомендовалпроверяя полученное сообщение и визуально проверяя, является ли оно действующим JSON.Что-то вроде:

webSocket.onmessage = function(event) {
    console.log(event.data);
}

Затем вы можете проверить консоль разработчика вашего браузера (обычно это Cmd-Shift-I на Mac или F12 в другом месте), чтобы увидеть, что вы на самом деле получаете.

...