我试图从这个问题的例子到Android平板电脑上工作。
Cordova chrome.socket API. Any example?
示例失败,我相信它是因为manifest.json文件中的网络权限未设置。
我的问题是它属于何处或我在何处放置这些权限。
感谢您的帮助。
杰克
答案 0 :(得分:1)
您不需要Cordova应用程序的任何特殊清单权限。只要您在答案中使用示例代码(不是问题;))
我对Cordova应用程序的唯一警告是,您需要明确等待" deviceready
" chrome.socket
API可用之前的事件。
我刚用这个JS测试过,我的设备(Nexus 7)连接到Yahoo并下载主页的前千字节,并将其记录到控制台。
function stringToArrayBuffer(string) {
var buffer = new ArrayBuffer(string.length);
var bufView = new Uint8Array(buffer);
for (var i=0; i < string.length; i++) {
bufView[i] = string.charCodeAt(i);
}
return buffer;
}
function arrayBufferToString(buffer) {
return String.fromCharCode.apply(null, new Uint8Array(buffer));
}
// Set the hostname; we'll need it for the HTTP request as well
var hostname = "www.yahoo.com";
document.addEventListener('deviceready', function() {
chrome.socket.create("tcp", function(createInfo) {
var socketId = createInfo.socketId;
chrome.socket.connect(socketId, hostname, 80, function(result) {
if (result === 0) {
var requestString = "GET / HTTP/1.1\r\nHost: "+hostname+"\r\nConnection: close\r\n\r\n";
var requestBuffer = stringToArrayBuffer(requestString);
chrome.socket.write(socketId, requestBuffer, function(writeInfo) {
chrome.socket.read(socketId, 1000, function(readInfo) {
var htmlString = arrayBufferToString(readInfo.data);
// do something with htmlString here
console.log(htmlString);
});
});
}
});
});
}, false);