Как умно сохранить длинную строку джаваскриптом на сервере?

Moderator: Little Muk

orleanz
Posts: 132
Joined: 22 Dec 2011, 22:58

Как умно сохранить длинную строку джаваскриптом на сервере?

Post by orleanz »

Вот мне надо БЫЛО сохранять джаваскриптом длинные (1-2М) строки в базу на сервере, по небыстрым каналам связи - мобильный интернет (иногда даже EDGE)

чтобы с показом реального прогресса операции и с возможность умного рестарта после обрыва связи

Я сделал это по быстрому сам -

1. для строки считается чексумма
2. строка разбивается на короткие блоки,
3. последовательные аджакс пост-запросы кидают блоки на сервер
4. там они сохраняются во временной таблице
5. потом, когда последний блок сохранен, они на сервере соединяются в исходную строку, временные блоки удаляеются из таблицы
6. проверяется на всякий пожарный случай чексумма (хотя наверно это не надо, не было ни одного раза чтобы чексуммма не сошлась, протокол HTTP похоже гарантирует целостность данных)

при начале передачи - сервер сообщает, какие блоки для данной чексуммы у него уже есть, так что при разрыве начитается передача не с начала, а с точки обрыва - что удобно, когда клиент заехал на поезде в туннель и связь прервалась

все прекрасно работает, на клиенте js, на сервере - python на джанго.

но может, я изобретаю велосипед? может, все это делается какой нибудь профессиональной либой, которую можно заиспользовать в проекте?

повторюсь, все прекрасно работает как есть, но хочется совершенства.

если такой либы нет - может, есть смысл выложить мое решение для публики в открытый доступ? ведь задача адски generic - умное сохранение строк джаваскриптом, такое нужно тысячам людей, зачем каждый раз самому писать...
User avatar
sergNN
Posts: 2695
Joined: 23 Sep 2011, 21:50

Re: Как умно сохранить длинную строку джаваскриптом на серве

Post by sergNN »

скажи, встречный вопрос. когда ты постишь картинку на сервер, размером в твои мегабайты, ты понимаешь как это происходит ?
Если йето было б так то счастливы те мужчины, только равнозначность в понимании таких как ты, отлично от реалий по совести. (c) проц
orleanz
Posts: 132
Joined: 22 Dec 2011, 22:58

Re: Как умно сохранить длинную строку джаваскриптом на серве

Post by orleanz »

sergNN wrote:скажи, встречный вопрос. когда ты постишь картинку на сервер, размером в твои мегабайты, ты понимаешь как это происходит ?
а что там понимать? и что меняет это понимание?

и потом, когда я пощу картинку, я во первых не получаю прогресс в процентах, во вторых, нет рестарта загрузки с точки обрыва.

так что это совсем не в тему.
sena
Posts: 14843
Joined: 20 Sep 2011, 21:38
ник с it-ru.de: верифицирован

Re: Как умно сохранить длинную строку джаваскриптом на серве

Post by sena »

orleanz wrote: но может, я изобретаю велосипед? может, все это делается какой нибудь профессиональной либой, которую можно заиспользовать в проекте?
Поздравляю тебя, ты сделал на коленках протокол TCP/IP. Другими словами, ты изобрёл велосипед! То что ты делаешь уже реализовано в протоколе TCP/IP - разбиение на пакеты, пересылка, сборка пакетов обратно.

То есть достаточно для твоей задачи - открыть сокет, начать закачку, если связь прервалась, установить связь опять и продолжить закачку. Зачем всё то, что ты нагородил???
orleanz
Posts: 132
Joined: 22 Dec 2011, 22:58

Re: Как умно сохранить длинную строку джаваскриптом на серве

Post by orleanz »

sena wrote:
orleanz wrote: но может, я изобретаю велосипед? может, все это делается какой нибудь профессиональной либой, которую можно заиспользовать в проекте?
Поздравляю тебя, ты сделал на коленках протокол TCP/IP. Другими словами, ты изобрёл велосипед! То что ты делаешь уже реализовано в протоколе TCP/IP - разбиение на пакеты, пересылка, сборка пакетов обратно.

То есть достаточно для твоей задачи - открыть сокет, начать закачку, если связь прервалась, установить связь опять и продолжить закачку. Зачем всё то, что ты нагородил???
читаем внимательно - речь идет про джаваскрипт. Обычные js в вебстраничке. Тот который alert('vasja pupkin'), ага. Какие сокеты нафиг?

или ты имеешь в виду HTML5 ВебСокеты? Мой способ работает для любого сервера, для вебсокетов нужен сервер который их поддерживает. И вообще, Вебсокеты - это мощный оверкилл - там можно иметь двухстороннюю коммуникаюцию, я же просто сохраняю строку на сервер, неужели не понятно.
sena
Posts: 14843
Joined: 20 Sep 2011, 21:38
ник с it-ru.de: верифицирован

Re: Как умно сохранить длинную строку джаваскриптом на серве

Post by sena »

orleanz wrote: читаем внимательно - речь идет про джаваскрипт. Обычные js в вебстраничке. Тот который alert('vasja pupkin'), ага. Какие сокеты нафиг?
Я на джаваскрипте писал написал строчек 100 за всю жизнь. Но у тебя же есть и другая сторона - сервер? Там же у тебя есть что-то серверное, джава там или php?
orleanz
Posts: 132
Joined: 22 Dec 2011, 22:58

Re: Как умно сохранить длинную строку джаваскриптом на серве

Post by orleanz »

sena wrote:
orleanz wrote: читаем внимательно - речь идет про джаваскрипт. Обычные js в вебстраничке. Тот который alert('vasja pupkin'), ага. Какие сокеты нафиг?
Я на джаваскрипте писал написал строчек 100 за всю жизнь. Но у тебя же есть и другая сторона - сервер? Там же у тебя есть что-то серверное, джава там или php?
обычный олдскульный js не поддерживает обычные сокеты которые у тебя есть в крестах например, (так же как множество другие вещей, из-за ограничени секьюрити, например ты не можешь джаваскриптом с вебстраницы отформатировать посетителю сайта диск Ц, und das ist gut so )

но поскольку нечто похожее нужно в реальной жизни (для чатов, например), в последние годы, в рамках ХТМЛ5, замутили ВебСокеты, которые упомянуты в исходном постенге, но которые представляют мощный оверкилл по сравнению с моим подходом и требованиями.
orleanz
Posts: 132
Joined: 22 Dec 2011, 22:58

Re: Как умно сохранить длинную строку джаваскриптом на серве

Post by orleanz »

швейцар001 wrote:http://socket.io/
тема в принципе хорошая, но у меня на стороне сервера не Нодэ а обычный Джанго который out-of-the-box не поддеживает socket.io

конечно можно запустить параллельно с джанго и Нодэ, и обмениваться данными между ними, но это не совсем элегантно.
orleanz
Posts: 132
Joined: 22 Dec 2011, 22:58

Re: Как умно сохранить длинную строку джаваскриптом на серве

Post by orleanz »

orleanz wrote:
швейцар001 wrote:http://socket.io/
тема в принципе хорошая, но у меня на стороне сервера не Нодэ а обычный Джанго который out-of-the-box не поддеживает socket.io

конечно можно запустить параллельно с джанго и Нодэ, и обмениваться данными между ними, но это не совсем элегантно.
и потом, я не уверен что в сокет.ио есть именно то, что я спрашиваю - репорт о прогрессе в процентах строки, и рестарт с места разрыва. Вот упорно люди не хотят читать исходный постинг. Блин, прочтите, там пару предложений всего. Еще раз повторяю: прогресс бар и рестарт не с начала а с разрыва.
Post Reply