我正在尝试使用 Chrome Canary(当前版本 25)让 UDP 套接字适用于打包的应用程序。我对此处的UDP 示例与此处的参考文档冲突这一事实感到非常困惑。
官方示例使用这一行:
chrome.socket.create('udp', '127.0.0.1', 1337, { onEvent: handleDataEvent }, ...
在 Canary 中使用此行会导致错误:
未捕获的错误:调用表单 socket.create(string, string, integer, object, function) 与定义 socket.create(string type, optional object options, function callback) 不匹配
这并不奇怪,因为这与函数的文档形式相匹配。(我猜这个例子已经过时了?)好的,所以我试试这个......
chrome.socket.create('udp', { onEvent: handleDataEvent }, ...
金丝雀抱怨:
未捕获的错误:参数 2 的值无效。属性“onEvent”:意外属性。
现在我很困惑,特别是因为这个参数在参考文献中没有记录。所以我只是这样做:
chrome.socket.create('udp', {}, ...
现在它创建好了,但是下面的调用connect
...
chrome.socket.connect(socketId, function(result) ...
...失败了:
未捕获的错误:调用表单 socket.connect(integer, function) 与定义 socket.connect(integer socketId, string hostname, integer port, function callback) 不匹配
...这并不奇怪,因为现在我的代码没有在任何地方提到主机或端口,所以我想它需要在connect
. 所以我将其更改为以下形式:
chrome.socket.connect(socketId, address, port, function (result) ...
最后我可以连接并写入套接字了。但这不包括阅读。
- 有人可以向我展示一个可以发送和接收的基于 UDP 的工作示例,以便我可以使用它吗?
- 由于示例的 onEvent 处理程序不起作用,我如何接收数据?我如何确保在数据到达后立即按需接收数据而不会阻塞?