Я написал очень простое тестовое приложение, которое создает веб-сокет и анализирует полученные данные (сервер отправляет действительные данные JSON).
Проблема в том, что первый объект JSON анализируется успешно, но все последующие объекты анализируются с ошибками.
Вот весь код:
$("#connect").click(function ()
{
socket = new WebSocket("my server address");
socket.onopen = function ()
{
$("#log").append("Connection opened.<br/>");
socket.send(/* login information goes here */));
};
socket.onerror = function (e)
{
$("#log").append("Error: " + e.data + "<br/>");
};
socket.onclose = function ()
{
$("#log").append("Connection closed.<br/>");
};
socket.onmessage = function (e)
{
$("#log").append(index.toString() + ": " + e.data + "<br/><br/>");
console.log("Parsing " + index);
index++;
var obj = JSON.parse(e.data);
console.log("Parsed:");
console.log(obj);
};
});
То, что я получаю: первый раз, когда вызывается «socket.onmessage» - анализируется JSON, и консоль JS отображает объект. Когда приходит второй, он выводит его в мой «журнал», но JSON.parse завершается с ошибкой «Uncaught SyntaxError: Неожиданный токен ILLEGAL».
Меня озадачивает то, что полученная строка является допустимым объектом JSON - я проверил его через несколько валидаторов JSON. Я даже скопировал и вставил его из своего «журнала», поместил в отдельный файл и проанализировал с помощью $ .getJSON - и он работал нормально, без ошибок.
Браузер: Chrome 13.0.782.112
Любые идеи будут полезны.
Спасибо.