Я пытаюсь заставить сокеты UDP работать с упакованным приложением, используя Chrome Canary (в настоящее время версия 25). Меня очень смущает тот факт, что приведенный здесь пример UDP конфликтует с справочная документация здесь.
Официальный пример использует эту строку:
chrome.socket.create('udp', '127.0.0.1', 1337, { onEvent: handleDataEvent }, ...
В Canary использование этой строки приводит к ошибке:
Неперехваченная ошибка: вызов формы socket.create(строка, строка, целое число, объект, функция) не соответствует определению socket.create(тип строки, необязательные параметры объекта, обратный вызов функции)
Неудивительно, поскольку это соответствует задокументированной форме функции. (Наверное, пример устарел?) Хорошо, попробую так...
chrome.socket.create('udp', { onEvent: handleDataEvent }, ...
Канарейка жалуется:
Неперехваченная ошибка: недопустимое значение для аргумента 2. Свойство onEvent: непредвиденное свойство.
Теперь я запутался, тем более что этот параметр недокументирован в справочнике . Поэтому я просто иду с этим:
chrome.socket.create('udp', {}, ...
Теперь он создает OK, но следующий вызов connect
...
chrome.socket.connect(socketId, function(result) ...
... терпит неудачу с этим:
Неперехваченная ошибка: вызов формы socket.connect (целое число, функция) не соответствует определению socket.connect (целое число socketId, строковое имя хоста, целочисленный порт, обратный вызов функции)
... что неудивительно, так как теперь мой код нигде не упоминает хост или порт, поэтому я думаю, что он должен быть в connect
. Поэтому я изменяю его на форму:
chrome.socket.connect(socketId, address, port, function (result) ...
Наконец-то я могу подключиться и написать в сокет ОК. Но это не относится к чтению.
- Может ли кто-нибудь показать мне рабочий пример на основе UDP, который может отправлять и получать, чтобы я мог работать с ним?
- Как получить данные, если обработчик onEvent в примере не работает? Как обеспечить получение любых данных по запросу, как только они поступят без блокировки?