Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > Серверные технологии и Flash

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 27.11.2014, 01:53
TurboDizel вне форума Посмотреть профиль Отправить личное сообщение для TurboDizel Найти все сообщения от TurboDizel
  № 1  
Ответить с цитированием
TurboDizel
 
Аватар для TurboDizel

Регистрация: Apr 2010
Сообщений: 137
По умолчанию XMLSocket отправляет несколько сообщений в одном

Привет всем! Дело такое, есть XMLSocket, он подключен к Node.js серверу, всё отлично всё прекрасно, но иногда бывает, что flash своим XMLSocket`ом отправляет в одном сообщении два, а то и три сообщения. Из-за чего это понятно, интересно то, как их можно обозначить так, чтобы обработать потом на сервере? Хочу разбить эти сообщения каким-то (какими-то) символами, например поставить между сообщениями знаки #*, и по ним разбивать уже на сервере. Но вдруг у меня будет сообщение, внутри которого уже будут такие знаки #*, тогда проблема будет. Что посоветуете, какими символами можно разбить, или какие есть другие способы обозначить? Каждое сообщение - это json в виде строки.


Последний раз редактировалось TurboDizel; 27.11.2014 в 02:41.
Старый 27.11.2014, 09:11
bifidokk вне форума Посмотреть профиль Отправить личное сообщение для bifidokk Найти все сообщения от bifidokk
  № 2  
Ответить с цитированием
bifidokk
 
Аватар для bifidokk

Регистрация: Jan 2011
Сообщений: 200
Более того, у вас могут прийти 2 "склееных" полных сообщений и кусочек третьего. Мы в конце каждого сообщения добавляем символ '\r' и разбиваем на сервере по нему, ну и проверяем каждое сообщение на корректность, если пришел кусок, то добавляем его в буфер и получаем продолжение уже в следующем сообщении.

Старый 27.11.2014, 09:58
Korchy вне форума Посмотреть профиль Отправить личное сообщение для Korchy Найти все сообщения от Korchy
  № 3  
Ответить с цитированием
Korchy
 
Аватар для Korchy

Регистрация: May 2011
Сообщений: 301
Записей в блоге: 2
Раз json, значит строка должна оформляться фигурными скобками. Считай количество и разбивай по ним.
__________________
interplanety

Старый 27.11.2014, 23:10
KingMaks вне форума Посмотреть профиль Отправить личное сообщение для KingMaks Найти все сообщения от KingMaks
  № 4  
Ответить с цитированием
KingMaks

Регистрация: Jan 2013
Сообщений: 61
Korchy, а это не в напряг для сервера? пересчитывать скобки каждого сообщения пришедшего, а таких сообщений может быть по 100-200 в секунду?

Добавлено через 10 минут
bifidokk, так это флеш отправляет сообщения кучей или сервер, если пришло несколько сообщений подряд лепит их в одно?

Старый 28.11.2014, 09:31
bifidokk вне форума Посмотреть профиль Отправить личное сообщение для bifidokk Найти все сообщения от bifidokk
  № 5  
Ответить с цитированием
bifidokk
 
Аватар для bifidokk

Регистрация: Jan 2011
Сообщений: 200
Цитата:
Сообщение от Korchy Посмотреть сообщение
Раз json, значит строка должна оформляться фигурными скобками. Считай количество и разбивай по ним.
зачем, если можно добавить разделитель?

Добавлено через 1 минуту
KingMaks, сервер, я, честно говоря, не разбирался в механике и причине, почему и как это происходит (а зря), поэтому воду лить по этому поводу не буду

Старый 28.11.2014, 11:57
Korchy вне форума Посмотреть профиль Отправить личное сообщение для Korchy Найти все сообщения от Korchy
  № 6  
Ответить с цитированием
Korchy
 
Аватар для Korchy

Регистрация: May 2011
Сообщений: 301
Записей в блоге: 2
Цитата:
Сообщение от KingMaks Посмотреть сообщение
Korchy, а это не в напряг для сервера?
Не знаю, надо тестировать.

Предложенный вариант с разделителем тоже хороший.
__________________
interplanety

Старый 26.12.2014, 21:22
faraday вне форума Посмотреть профиль Отправить личное сообщение для faraday Найти все сообщения от faraday
  № 7  
Ответить с цитированием
faraday
 
Аватар для faraday

Регистрация: Apr 2009
Сообщений: 409
Для node.js есть модуль carrier, который сам выделяет сообщения из чанков по разделителю. исопльзовать так
carrier.carry(socket, function(line) {
message(socket,line);
},'utf8', '\0');

Добавлено через 36 секунд
\0 стандартный разделитель для flash xmlSocket

Старый 29.12.2014, 14:03
PainKiller вне форума Посмотреть профиль Отправить личное сообщение для PainKiller Найти все сообщения от PainKiller
  № 8  
Ответить с цитированием
PainKiller
 
Аватар для PainKiller

блогер
Регистрация: Sep 2011
Адрес: Москва
Сообщений: 533
Записей в блоге: 4
faraday спасибо, про carrier не знал, я лично когда столкнулся с такой проблемой (а я тоже передавал джисон в виде строки), вышел из положения так (это не весь код, но идея думаю будет понятна):
Код:
var json = "";

...

socket.on('data', function(data) {
			 try {
			        json = JSON.parse(data);
			    } catch (e) {
			        json += data;

			        try {
			            json = JSON.parse(json);
			            // Now it's fine.
			        } catch (e) {
			            // Wait for more.
			            return;
			        }
			    }
             // тут что то делаем с получившимся валидным json-объектом
    }

Создать новую тему Ответ Часовой пояс GMT +4, время: 08:45.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 08:45.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.