В настоящий момент я создал HTTP-сервер на моем iPhone-приложении и разместил там HTML. Затем доступ к нему в браузере системы, находящейся в одной и той же сети iPhone. Я вижу файл в моем браузере.
Теперь, используя WebSockets, я пытаюсь отправить файл из браузера в приложение, , но он не работает. Это нормально с текстовым сообщением, но не в случае данных. В качестве обходного пути я попробовал его с помощью Base64 String, но в этом случае также сокет Get Closed.
Для загрузки с помощью JAVAScript я написал этот код, здесь я попытался отправить строку Base64 в фрагменты размером 200 символов.
function sendFile() {
var preview = document.querySelector('img');
var file = document.querySelector('input[type=file]').files[0];
var reader = new FileReader();
var rawData = new ArrayBuffer();
reader.onloadend = function () {
var stringContent = reader.result;
preview.src = stringContent;
var array = stringContent.match(/.{1,200}/g);
for (var i = 0; i < array.length; i++) {
ws.send(array[i]);
};
}
if (file) {
reader.readAsDataURL(file);
}else {
preview.src = "";
}
}
На стороне iPhone я использовал WebSocket класс из Libary CocoaHTTPServer
Сокет закрыт на этой строке.
ИЗМЕНИТЬ
После многих проб и ошибок я узнаю, что это происходит. Если я открываю это в браузере Mac, не в случае браузера других устройств, например iPad, iPhone. Это очень странный случай использования, но его правда.
EDIT II
После многих размышлений я нашел ключ к этому: это хорошо работало для браузеров iPhone, iPad, iPod и Opera, потому что у них есть старая поддержка websocket, я нашел это от здесь..
В этом вопросе у парня есть обратный случай: он пытается закрыть соединение в этих браузерах, в моем случае Он закрывается на других браузерах, таких как хром, Mozilla и т.д. Это потому, что что-то называется форматированные пакеты Hybi. Это может помочь кому-то предложить решение для моего дела.