|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Apr 2010
Сообщений: 137
|
XMLSocket отправляет несколько сообщений в одном
Привет всем! Дело такое, есть XMLSocket, он подключен к Node.js серверу, всё отлично всё прекрасно, но иногда бывает, что flash своим XMLSocket`ом отправляет в одном сообщении два, а то и три сообщения. Из-за чего это понятно, интересно то, как их можно обозначить так, чтобы обработать потом на сервере? Хочу разбить эти сообщения каким-то (какими-то) символами, например поставить между сообщениями знаки #*, и по ним разбивать уже на сервере. Но вдруг у меня будет сообщение, внутри которого уже будут такие знаки #*, тогда проблема будет. Что посоветуете, какими символами можно разбить, или какие есть другие способы обозначить? Каждое сообщение - это json в виде строки.
Последний раз редактировалось TurboDizel; 27.11.2014 в 02:41. |
|
|||||
Регистрация: Jan 2011
Сообщений: 200
|
Более того, у вас могут прийти 2 "склееных" полных сообщений и кусочек третьего. Мы в конце каждого сообщения добавляем символ '\r' и разбиваем на сервере по нему, ну и проверяем каждое сообщение на корректность, если пришел кусок, то добавляем его в буфер и получаем продолжение уже в следующем сообщении.
|
|
|||||
Раз json, значит строка должна оформляться фигурными скобками. Считай количество и разбивай по ним.
__________________
interplanety |
|
|||||
Регистрация: Jan 2013
Сообщений: 61
|
Korchy, а это не в напряг для сервера? пересчитывать скобки каждого сообщения пришедшего, а таких сообщений может быть по 100-200 в секунду?
Добавлено через 10 минут bifidokk, так это флеш отправляет сообщения кучей или сервер, если пришло несколько сообщений подряд лепит их в одно? |
|
|||||
Регистрация: Jan 2011
Сообщений: 200
|
Цитата:
Добавлено через 1 минуту KingMaks, сервер, я, честно говоря, не разбирался в механике и причине, почему и как это происходит (а зря), поэтому воду лить по этому поводу не буду |
|
|||||
Не знаю, надо тестировать.
Предложенный вариант с разделителем тоже хороший.
__________________
interplanety |
|
|||||
Регистрация: Apr 2009
Сообщений: 409
|
Для node.js есть модуль carrier, который сам выделяет сообщения из чанков по разделителю. исопльзовать так
carrier.carry(socket, function(line) { message(socket,line); },'utf8', '\0'); Добавлено через 36 секунд \0 стандартный разделитель для flash xmlSocket |
|
|||||
faraday спасибо, про carrier не знал, я лично когда столкнулся с такой проблемой (а я тоже передавал джисон в виде строки), вышел из положения так (это не весь код, но идея думаю будет понятна):
|
Часовой пояс GMT +4, время: 08:45. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|