【发布时间】:2017-06-06 14:32:03
【问题描述】:
我目前正在开发使用 Cordova 创建的移动应用程序。它使用套接字连接到我们的另一个设备与之通信。我们目前使用 chrome.sockets.tcp 这个plugin。
连接正常,但在 Android 设备上断开连接时出现问题。这不是超时问题,因为断开连接可能会在 20 到 30 秒到 10 到 15 分钟之间发生。当我每秒下载 2 到 3 个请求的数据时,它甚至会断开连接。日志中没有错误,也没有任何内容表明发生了什么。 chrome.sockets.tcp 似乎没有太多的连接状态报告方式,所以我可以弄清楚它为什么会断开连接。
所以我尝试切换到 JavaScript 的 WebSocket,看看它是否有助于解决断开连接的问题。或者至少它似乎提供了更多的连接状态信息。但我无法连接。我得到Error during WebSocket handshake: net::ERR_INVALID_HTTP_RESPONSE。这是我的代码:
var socket = new WebSocket("ws://" + IP + ":" + port);
socket.protocol = "soap";
socket.onclose = function(event) {
console.log(event);
};
socket.onerror = function(event) {
console.log(event);
};
socket.onmessage = function(event) {
console.log(event);
};
socket.onopen = function(event) {
console.log(event);
};
我做了一些研究,似乎我可能必须使用socket.protocol = "aProtocol"; 设置协议,但是在我设置协议并设置断点之后,即使调用socket.protocol = "soap";,socket.protocol 仍然是“”。使用构造函数设置协议也不行。
谁能告诉我为什么 chrome.sockets.tcp 在 Android 而不是 iOS 上存在这种断开连接问题的一些原因,或者使用 JavaScript 的本机 WebSocket 无法连接的任何原因?非常感谢任何帮助。
【问题讨论】:
标签: javascript android cordova websocket