Полный пример передачи файла Strophe.js

Я разрабатываю веб-клиент чата (на основе XMPP), используя Strophe.js. На стороне сервера у меня есть сервер Openfire.

Я ищу полный (и работающий) пример передачи файлов (xep-0096 ) с помощью Strophe.js.

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

Здесь, в StackOverflow, я нашел только неполный пост, касающийся этого вопроса, например: Сохранить полученные файлы из xmpp Strophe si-filetransfer

Также в Интернете я не нашел полного решения для своих нужд.

Если есть другое решение для достижения вышеуказанной цели (передача файлов в JS-клиенте по протоколу XMPP), добро пожаловать!


person vp-platform    schedule 09.02.2016    source источник
comment
I found only some incomplete post relating the matter - где? это?   -  person Jaromanda X    schedule 09.02.2016
comment
Да, это один из них   -  person vp-platform    schedule 09.02.2016
comment
@all_who_voted_to_close: Я не понимаю, как вы могли оценивать мой пост как не по теме, если у 4 из вас (4/5) нет в профиле XMPP или Strophe...(а у последнего нет Strophe.. .).   -  person vp-platform    schedule 15.02.2016
comment
спасибо за НЕ ответ   -  person vp-platform    schedule 19.02.2016


Ответы (1)


Ниже приведена очень простая демонстрация чата, написанная с использованием jQuery и StropheJS<. /strong> с функциями передачи файлов. Реализация передачи файлов основана на этих двух плагинах Strophe.js:

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

Вот плункер: http://plnkr.co/edit/fYpXo1mFRWPxrLlgr123

P.S.: вы должны развернуть свой собственный сервер XMPP и адаптировать следующие строки кода в соответствии с вашей конфигурацией:

var server = 'mydomain.com';
var BOSH_SERVICE = 'http://127.0.0.1:7070/http-bind/';
person beaver    schedule 12.02.2016
comment
Я попробовал ваш код и заметил, что время от времени ibb уходит в тайм-аут... Есть ли решение этой проблемы? - person vp-platform; 12.02.2016
comment
Вы можете использовать более надежное соединение, изменив его с Http-bind (bosh) на Websockets, если ваш сервер это позволяет. Очевидно, вы должны соответствующим образом изменить URL-адрес подключения (например, ws://127.0.0.1:7070/ws/) - person beaver; 12.02.2016
comment
Большое спасибо @beaver! - person vp-platform; 12.02.2016
comment
@beaver $('#btnSendFile').bind('щелчок', function() { console.log('Файл нажат:'); sendFileClick(); }); пропал, отсутствует. и не работает. - person user914425; 05.04.2016
comment
@ user914425 спасибо, плункер обновлен - person beaver; 05.04.2016
comment
@beaver Я получаю сообщение об ошибке fileTransferHandler: err=Error: [элемент объекта]. Вам также необходимо вызвать handleFileSelect. Он отсутствует там, где он устанавливает файловый объект. - person user914425; 05.04.2016
comment
@beaver Я получаю ibb.open: err = Ошибка: функция не реализована в функции fileTransferHandler (файл, ошибка)? Что это значит? - person user914425; 05.04.2016
comment
@user914425, возможно, ваш сервер не поддерживает IBB (проверьте xmpp.org/extensions/xep- 0047.html#создать) - person beaver; 05.04.2016
comment
@beaver Я использую последнюю версию openfire 4.0.1. Вместо внутриполосных байтовых потоков как насчет внеполосных данных. Как внести изменения в код? - person user914425; 05.04.2016
comment
@beaver, можете ли вы также обновить пример, чтобы он содержал файлы для приема как внутриполосных, так и внеполосных данных? - person user914425; 05.04.2016
comment
@beaver, можете ли вы опубликовать рабочий пример внеполосной передачи файлов на основе github.com/strophe/strophejs-plugins/tree/master/? - person user914425; 07.04.2016
comment
@vp-platform Я также заметил, что ibb иногда уходит в тайм-аут, и в случае успеха всегда файл имеет нулевой размер. - person user914425; 07.04.2016
comment
@user914425 user914425, не могли бы вы рассказать подробнее, как вы решили ошибку с ошибкой err = Error: [object Element], потому что у меня есть эта ошибка сейчас. заранее спасибо - person BohdanZ; 12.07.2016
comment
@beaver, или, может быть, вы знаете, как решить эту ошибку. Спасибо - person BohdanZ; 12.07.2016
comment
@BohdanZ, можете ли вы прислать мне код, в котором вы получаете err = Error: [элемент объекта]? Как я упоминал выше, я постоянно получаю ошибку тайм-аута, и когда это удается, я получаю файл нулевого размера. Посмотрите, сможете ли вы реализовать внеполосную передачу данных. Здесь вам повезет больше. - person user914425; 14.07.2016
comment
@BohdanZ вы можете использовать этот github.com/ strophe/strophejs-plugins/blob/master/outofband/. в качестве отправной точки. - person user914425; 14.07.2016