試圖在Chrome版本25.0.1364.5開發版中使用chrome.socket
API使用TCP套接字。獲取可讀取新數據的事件 - chrome.socket.read API
看chrome.socket.read
的documentation似乎沒有辦法在新數據可讀取時得到通知。
有一些sample code因爲我覺得這輪詢讀命令每500ms,但是這不會是有效的TCP服務器/準確
// 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連接可以實現這樣的事情嗎?而不必每x毫秒輪詢read
方法?
更新
這是我使用到更好的文檔/事件支持中存在一種解決方法。
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);
'onEvent:'不適用於'tcp'套接字嗎? – Sudarshan
它會拋出一個錯誤,說它期望不同類型的參數..我已更新跟蹤 – lostsource
「網絡通信」頁面和[實際API文檔](http://developer.chrome.com/apps /socket.html)似乎不同步 - 在API文檔中沒有提及'onEvent'。此外,API會討論'callback'參數,但是沒有一個套接字函數被指定爲接受回調。這些文檔現在看起來有些混亂。 – apsillers