Попытка использования сокетов TCP с использованием chrome.socket
API в Chrome Версия 25.0.1364.5 dev.Получение события, когда новые данные могут быть прочитаны - chrome.socket.read API
Означает, что documentation для chrome.socket.read
не представляется возможным получить уведомление, когда новые данные доступны для чтения.
Существует несколько sample code для сервера TCP, который опрашивает команду чтения каждого 500мс, но я думаю, что это не будет эффективным/точный
// Start polling for reads.
setInterval(this._periodicallyRead.bind(this, socketId), 500);
Что более запутанным является то, что в 'Network Communications' Documentation в соответствии с разделом «Прием данных» указывается, что специальный обработчик может быть передан в качестве опции onEvent
в chrome.socket.create
параметр представляет собой объект с одним значением «OnEvent», которая является функцией ссылка на метод, который будет вызываться, когда DAT a имеется в порту.
Этот OnEvent параметр будет использоваться как этот
chrome.socket.create(
'udp', '127.0.0.1', 1337,
{ onEvent: handleDataEvent }, // <-- call this when new data is available
createHandler
)
Но это, кажется, применяются только для UDP соединений, как я получаю следующее сообщение об ошибке при попытке использовать его
Error: Invocation of form
socket.create(string, string, integer, object, function)
doesn't match definition
socket.create(string type, optional object options, function callback)
at Object.normalizeArgumentsAndValidate (schemaUtils:119:11)
at Object.<anonymous> (schema_generated_bindings:301:32)
at chrome-extension://obljaojhdffbpcdfbeoiejegaodfoonp/background.js:11:15
at chrome.Event.dispatchToListener (event_bindings:387:21)
at chrome.Event.dispatch_ (event_bindings:373:27)
at dispatchArgs (event_bindings:249:22)
at Object.app.runtime.onLaunched (app.runtime:116:7)
at Object.chromeHidden.Event.dispatchEvent (event_bindings:255:35)
Так вопрос в том, может ли подобное быть достигнуто с помощью TCP Connections? Вместо того, чтобы опросить метод read
каждые x миллисекунд?
Update
Это обходной путь я использую до лучшей поддержки документации/событие не существует.
function onReadHandler(readInfo) {
// do things with data
// ....
// re register handler with callback itself
chrome.socket.read(socketId,null,onReadHandler);
}
chrome.socket.read(socketId,null,onReadHandler);
does 'onEvent:' не работает для 'tcp' сокетов? – Sudarshan
будет выдавать ошибку, говоря, что она ожидает различного типа параметров .. Я обновил вопрос с помощью трассировки – lostsource
Страница «Сетевые коммуникации» и [фактические документы API] (http://developer.chrome.com/apps /socket.html), похоже, не синхронизированы - в документах API нет упоминания 'onEvent'. Кроме того, API говорит о параметрах 'callback', но ни одна из функций сокета не указана для принятия обратных вызовов. Сейчас документы выглядят немного беспорядочными. – apsillers