Почему я получаю «Неожиданный токен A в JSON в позиции 0», даже если я точно знаю, что анализируемый JSON правильный (WebSockets)? - PullRequest
0 голосов
/ 27 мая 2020

Итак, я работаю с WebSockets, используя библиотеку ws. И сервер, и клиент могут отправить сообщение при нажатии определенной кнопки, и это сообщение представляет собой строковое JSON:

var msg = {
     'type' : 'chat',
     'content' : String(chat_msg)
};
conn.send(JSON.stringify(msg));

И сервер, и клиент получают сообщение и превращают его в объект еще раз:

var msg = JSON.parse(message.data);

Однако ... это работает только для сообщений, отправленных с сервера клиенту. Когда сообщение отправляется от клиента на сервер, эта операция синтаксического анализа не выполняется, и я получаю следующее сообщение:

Uncaught SyntaxError: Unexpected token A in JSON at position 0

Это предотвращает попадание любого сообщения на сервер, и единственный способ предотвратить это - не JSON ничего разбирать; но тогда "message.data" остается строкой (и я вижу ее в консоли - typeof (message.data) - это строка, и если я ее распечатаю, я вижу фактическую текстовую версию объекта JSON), но, конечно, , если он остается строкой, его нельзя использовать, так как я не могу легко получить доступ к его полям.

Так в чем проблема? Код для сервера и клиента одинаковый, так почему эта разница?

...