2016-12-13 3 views
1

В настоящее время я работаю над отправкой сообщения приложения C на сервер Meteor через websocket. Я использую jansson для преобразования JSON и nopoll в качестве библиотеки websocket.DDP-сообщение с ошибкой websocket

Все работает нормально в обоих направлениях (отправка/получение), за исключением случаев, когда я стараюсь отправлять очень большие сообщения (около 15 000 000 символов). Я думаю (я не уверен), что сообщение отправлено на сервер, поэтому библиотека nopoll не должна быть источником проблемы. Но, я уверен, что сообщение не обрабатывается Метером, каким он должен быть, потому что метод (RPC) никогда не называется.

Я обнаружил, что ограничение на сетевое ограничение равно максимальному значению 64-разрядного значения без знака, поэтому это не должно быть проблемой.

С другой стороны, я не нашел максимальную длину для сообщения DDP даже в DDP specification.

Есть ли у вас какое-либо представление о ограничении DDP или других параметрах, о которых я не думал?

+0

Вы пытались разбить пакет 15M на подпакеты? – LPs

+0

Я бы хотел не разделить данные, но если у меня не будет выбора, я сделаю это. Есть ли у вас представление о максимальном весе, который должен иметь подпакет? –

+0

Я бы подумал о том, чтобы разместить такую ​​большую панель данных в базе данных (а не только один массивный документ, или вы просто переместите свою проблему там), а затем отправьте короткое сообщение, используя DDP, чтобы сообщить другому концу, что данные настоящее время. – Mikkel

ответ

-1

Поскольку я работал над архитектурой, где клиент и сервер были на одном компьютере, я не ограничивался сетью. Думаю, я слишком быстро подталкивал слишком много информации, а розетка была просто заполнена данными.

Решение прост: вырезать данные по нескольким фрагментам, так как LP предлагает и осуществляет управление потоком.

Я также нашел Mongo C driver, что может быть другим решением, потому что я должен иметь возможность передавать данные непосредственно в базе данных, как предлагает Mikkel.

Благодарим вас за помощь.

+0

Это грустно ** ошибочно **. Это ограничение относится к конкретной реализации, а НЕ - к протоколу websocket (который допускает ~ [поля длины 64 бит] (https://tools.ietf.org/html/rfc6455#section-5.2)). Кроме того, протокол поддерживает фрагментацию «пакетов» (как реализован как [facil.io] (http://facil.io), так и Node.js), что в основном допускает неограниченный размер сообщения (который просто бесполезен, поскольку у вас наверняка закончится память). Пожалуйста, исправьте или удалите ответ. – Myst

+0

P.S. Я смогу удалить голосование, как только смогу (как только ответ будет обновлен). Здесь только указывается, что информация неверна для тех, кто читает эту тему. – Myst