Вот мне надо БЫЛО сохранять джаваскриптом длинные (1-2М) строки в базу на сервере, по небыстрым каналам связи - мобильный интернет (иногда даже EDGE)
чтобы с показом реального прогресса операции и с возможность умного рестарта после обрыва связи
Я сделал это по быстрому сам -
1. для строки считается чексумма
2. строка разбивается на короткие блоки,
3. последовательные аджакс пост-запросы кидают блоки на сервер
4. там они сохраняются во временной таблице
5. потом, когда последний блок сохранен, они на сервере соединяются в исходную строку, временные блоки удаляеются из таблицы
6. проверяется на всякий пожарный случай чексумма (хотя наверно это не надо, не было ни одного раза чтобы чексуммма не сошлась, протокол HTTP похоже гарантирует целостность данных)
при начале передачи - сервер сообщает, какие блоки для данной чексуммы у него уже есть, так что при разрыве начитается передача не с начала, а с точки обрыва - что удобно, когда клиент заехал на поезде в туннель и связь прервалась
все прекрасно работает, на клиенте js, на сервере - python на джанго.
но может, я изобретаю велосипед? может, все это делается какой нибудь профессиональной либой, которую можно заиспользовать в проекте?
повторюсь, все прекрасно работает как есть, но хочется совершенства.
если такой либы нет - может, есть смысл выложить мое решение для публики в открытый доступ? ведь задача адски generic - умное сохранение строк джаваскриптом, такое нужно тысячам людей, зачем каждый раз самому писать...
Как умно сохранить длинную строку джаваскриптом на сервере?
Moderator: Little Muk
Re: Как умно сохранить длинную строку джаваскриптом на серве
скажи, встречный вопрос. когда ты постишь картинку на сервер, размером в твои мегабайты, ты понимаешь как это происходит ?
Если йето было б так то счастливы те мужчины, только равнозначность в понимании таких как ты, отлично от реалий по совести. (c) проц
Re: Как умно сохранить длинную строку джаваскриптом на серве
а что там понимать? и что меняет это понимание?sergNN wrote:скажи, встречный вопрос. когда ты постишь картинку на сервер, размером в твои мегабайты, ты понимаешь как это происходит ?
и потом, когда я пощу картинку, я во первых не получаю прогресс в процентах, во вторых, нет рестарта загрузки с точки обрыва.
так что это совсем не в тему.
Re: Как умно сохранить длинную строку джаваскриптом на серве
Поздравляю тебя, ты сделал на коленках протокол TCP/IP. Другими словами, ты изобрёл велосипед! То что ты делаешь уже реализовано в протоколе TCP/IP - разбиение на пакеты, пересылка, сборка пакетов обратно.orleanz wrote: но может, я изобретаю велосипед? может, все это делается какой нибудь профессиональной либой, которую можно заиспользовать в проекте?
То есть достаточно для твоей задачи - открыть сокет, начать закачку, если связь прервалась, установить связь опять и продолжить закачку. Зачем всё то, что ты нагородил???
Re: Как умно сохранить длинную строку джаваскриптом на серве
читаем внимательно - речь идет про джаваскрипт. Обычные js в вебстраничке. Тот который alert('vasja pupkin'), ага. Какие сокеты нафиг?sena wrote:Поздравляю тебя, ты сделал на коленках протокол TCP/IP. Другими словами, ты изобрёл велосипед! То что ты делаешь уже реализовано в протоколе TCP/IP - разбиение на пакеты, пересылка, сборка пакетов обратно.orleanz wrote: но может, я изобретаю велосипед? может, все это делается какой нибудь профессиональной либой, которую можно заиспользовать в проекте?
То есть достаточно для твоей задачи - открыть сокет, начать закачку, если связь прервалась, установить связь опять и продолжить закачку. Зачем всё то, что ты нагородил???
или ты имеешь в виду HTML5 ВебСокеты? Мой способ работает для любого сервера, для вебсокетов нужен сервер который их поддерживает. И вообще, Вебсокеты - это мощный оверкилл - там можно иметь двухстороннюю коммуникаюцию, я же просто сохраняю строку на сервер, неужели не понятно.
- швейцар001
- Posts: 7956
- Joined: 07 Jul 2013, 21:31
Re: Как умно сохранить длинную строку джаваскриптом на серве
Я на джаваскрипте писал написал строчек 100 за всю жизнь. Но у тебя же есть и другая сторона - сервер? Там же у тебя есть что-то серверное, джава там или php?orleanz wrote: читаем внимательно - речь идет про джаваскрипт. Обычные js в вебстраничке. Тот который alert('vasja pupkin'), ага. Какие сокеты нафиг?
Re: Как умно сохранить длинную строку джаваскриптом на серве
обычный олдскульный js не поддерживает обычные сокеты которые у тебя есть в крестах например, (так же как множество другие вещей, из-за ограничени секьюрити, например ты не можешь джаваскриптом с вебстраницы отформатировать посетителю сайта диск Ц, und das ist gut so )sena wrote:Я на джаваскрипте писал написал строчек 100 за всю жизнь. Но у тебя же есть и другая сторона - сервер? Там же у тебя есть что-то серверное, джава там или php?orleanz wrote: читаем внимательно - речь идет про джаваскрипт. Обычные js в вебстраничке. Тот который alert('vasja pupkin'), ага. Какие сокеты нафиг?
но поскольку нечто похожее нужно в реальной жизни (для чатов, например), в последние годы, в рамках ХТМЛ5, замутили ВебСокеты, которые упомянуты в исходном постенге, но которые представляют мощный оверкилл по сравнению с моим подходом и требованиями.
Re: Как умно сохранить длинную строку джаваскриптом на серве
тема в принципе хорошая, но у меня на стороне сервера не Нодэ а обычный Джанго который out-of-the-box не поддеживает socket.ioшвейцар001 wrote:http://socket.io/
конечно можно запустить параллельно с джанго и Нодэ, и обмениваться данными между ними, но это не совсем элегантно.
Re: Как умно сохранить длинную строку джаваскриптом на серве
и потом, я не уверен что в сокет.ио есть именно то, что я спрашиваю - репорт о прогрессе в процентах строки, и рестарт с места разрыва. Вот упорно люди не хотят читать исходный постинг. Блин, прочтите, там пару предложений всего. Еще раз повторяю: прогресс бар и рестарт не с начала а с разрыва.orleanz wrote:тема в принципе хорошая, но у меня на стороне сервера не Нодэ а обычный Джанго который out-of-the-box не поддеживает socket.ioшвейцар001 wrote:http://socket.io/
конечно можно запустить параллельно с джанго и Нодэ, и обмениваться данными между ними, но это не совсем элегантно.