2015-11-29 7 views
0

Я разрабатываю приложение для Firefox OS, которое должно связываться с сервером через TCP-соединение. Вы можете увидеть приведенный ниже код (единственная разница в том, что я заменил фактический IP-адрес и порт именами переменных и исключил содержимое loginButes (на самом деле там ровно 24 байта)). Проблема в том, что в консоли я вижу только "Sent successfully". Поэтому я не получаю никакого ответа от сервера вообще. Насколько я понимаю, могут быть две возможные причины этой проблемы: либо данные, которые я использую для подключения, либо неверны, либо, как я пытаюсь получить ответ с сервера, это неправильно. Предположим, что все в порядке с данными. Должен ли мой код получать ответ или нет? (Т.е. должен socket.ondata быть выполнена, если сервер посылает мне в ответ-л)TCP-клиент в ОС Firefox. Нет ответа с сервера

(function() { 
    var options = {binaryType='arraybuffer'};  
    var socket = navigator.mozTCPSocket.open(ip, port, options); 

    sendButton.addEventListener('click', function() { 
     var loginButes = []; 
     var Int8View = new Uint8Array(loginBytes); 

     socket.ondata = function(event) { 
      console.log(event.data); 
      console.log("Received successfully"); 
     } 
     socket.onerror = function(event) { 
      console.log("Everything is bad"); 
     } 

     socket.send(Int8View); 
     console.log("Sent successfully"); 
    }); 
})(); 

P.S. Благодаря ответу @ DavidHoldeman, я избавился от первоначальной проблемы и пришел к другому. При отправке данных я получаю "uncaught exception: out of memory". Не могли бы вы предложить, что может быть причиной этой ошибки?

+0

Не уверен, но вы создаете массив с именем 'loginButes' и инициализируете Uint8Array переменной с именем' loginBytes', которая нигде не определена. Также проверьте размер Int8View. Если это действительно 24 байта, длина должна быть 24. –

+0

@ LoïcFaure-Lacroix Не могли бы вы быть более конкретными в отношении 'loginBytes'? Почему вы говорите, что он нигде не определен, если он уже объявлен и инициализирован? Btw, я напечатал размер 'Int8View'. Это 24, как и ожидалось. – mik

+0

Я уже говорил вам, что у вас есть опечатка .. в строке 6. Вы писали 'Butes' не' Bytes' ... –

ответ

0

Аргумент «Параметры» передаются mozTCPSocket.open должны быть объектом:

var options = { binaryType: 'arraybuffer' }; 
var socket = navigator.mozTCPSocket.open(ip, port, options); 

Это споткнулся меня в первый раз тоже. Удачи и счастливого кодирования!

+0

Спасибо! По крайней мере, ваш ответ помог добиться чего-то! – mik

+0

Btw, извините, что я не могу голосовать за ваш ответ, так как у меня недостаточно репутации. – mik

+0

К сожалению, первоначальная проблема была заменена другой. Не могли бы вы заглянуть в нее? (см. обновление моего вопроса) – mik