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

orleanz
Сообщения: 132
Зарегистрирован: 22.12.2011 21:58

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

Сообщение orleanz »

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

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

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

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

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

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

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

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

если такой либы нет - может, есть смысл выложить мое решение для публики в открытый доступ? ведь задача адски generic - умное сохранение строк джаваскриптом, такое нужно тысячам людей, зачем каждый раз самому писать...
Аватара пользователя
sergNN
Сообщения: 2695
Зарегистрирован: 23.09.2011 21:50

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

Сообщение sergNN »

скажи, встречный вопрос. когда ты постишь картинку на сервер, размером в твои мегабайты, ты понимаешь как это происходит ?
Если йето было б так то счастливы те мужчины, только равнозначность в понимании таких как ты, отлично от реалий по совести. (c) проц
orleanz
Сообщения: 132
Зарегистрирован: 22.12.2011 21:58

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

Сообщение orleanz »

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

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

так что это совсем не в тему.
sena
Сообщения: 16061
Зарегистрирован: 20.09.2011 21:38
Ник с it-ru.de: верифицирован

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

Сообщение sena »

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

То есть достаточно для твоей задачи - открыть сокет, начать закачку, если связь прервалась, установить связь опять и продолжить закачку. Зачем всё то, что ты нагородил???
orleanz
Сообщения: 132
Зарегистрирован: 22.12.2011 21:58

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

Сообщение orleanz »

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

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

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

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

Сообщение sena »

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

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

Сообщение orleanz »

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

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

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

Сообщение orleanz »

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

конечно можно запустить параллельно с джанго и Нодэ, и обмениваться данными между ними, но это не совсем элегантно.
orleanz
Сообщения: 132
Зарегистрирован: 22.12.2011 21:58

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

Сообщение orleanz »

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

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