WebSocket 无法连接到 Android 模拟器
websocket unable to connect to android emulator
所以这是我非常简单的WebSocket代码的代码,用于连接到Android模拟器...它挂了。
我可以确认我可以远程登录到模拟器。我也可以Websocket到Web服务器,即使http给出了旧的"意外响应代码200"。我还可以确认读取状态是一个常数零。
我还可以确认在连接页面时建立连接,在删除页面时断开连接。
向上翻页时:
$ netstat -a | grep 5554
TCP 127.0.0.1:5554 eww:0 LISTENING
TCP 127.0.0.1:5554 eww:49516 ESTABLISHED
TCP 127.0.0.1:5554 eww:54424 ESTABLISHED
TCP 127.0.0.1:49516 eww:5554 ESTABLISHED
TCP 127.0.0.1:54424 eww:5554 ESTABLISHED
删除页面后:
$ netstat -a | grep 5554
TCP 127.0.0.1:5554 eww:0 LISTENING
TCP 127.0.0.1:5554 eww:49516 ESTABLISHED
TCP 127.0.0.1:49516 eww:5554 ESTABLISHED
TCP 127.0.0.1:54424 eww:5554 TIME_WAIT
我正在使用Chrome,这一切都在Windows 7上运行。另一个连接可能是Eclipse。
有什么想法吗?
<!DOCTYPE html>
<html>
<head>
<title>Telnet to Android Emulator</title>
<style>
#messages {
list-style: none;
}
</style>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
</head>
<body>
<h1>Telnet to Android Emulator</h1>
<ul id="messages">
</ul>
<script>
$(document).ready(function() {
function log(message) {
$('#messages').append('<li>' + message + '</li>');
}
var socket;
if ("WebSocket" in window) {
log("WebSocket API supported");
} else {
log("WebSocket API not supported");
}
function wsOpen(e) {
log("OPEN");
}
function wsClose(e) {
log("CLOSED");
}
function wsError(e) {
log("ERROR " + e.data);
}
function wsMessage(e) {
log(e.data);
}
function openSocket() {
var wsuri = "ws://localhost:5554";
log("connecting to " + wsuri);
try {
socket = new WebSocket(wsuri);
socket.onopen = wsOpen;
socket.onclose = wsClose;
socket.onerror = wsError;
socket.onmessage = wsMessage;
} catch (exception) {
log('Caught ' + exception);
}
}
function closeSocket() {
log("disconnecting");
socket.close();
}
openSocket(); // down here for testing
});
</script>
</body>
</html>
WebSocket本身就是一个协议,Android模拟器不会说它。这就是为什么它没有连接或调用onopen函数的原因。
是时候制定新战略了
我通过编写一个 Java 小程序解决了这个问题,该小程序执行 telnet 连接,然后通过它从网页传递信息。在这种情况下,我使用谷歌地图上的点击来传递"地理修复"数据。
https://github.com/stevemarvell/GoogleMapToAndroidEmulator
这并不完美,但这是一个开始。
相关文章:
- 如何在android中使用phonegap将文件从一个文件夹移动/复制到另一个文件夹
- OnsenUI中的ng点击事件不会在Android模拟器上触发
- trigger('create') 在 Chrome 中正确呈现,但在 Android 模拟器中无法正确呈现
- webview日期选择器可以在android模拟器中工作,但不能在设备上工作
- 使用我在模拟器中创建的Canvas签名板,它运行良好,但在android设备中,两个签名板即将推出
- Phonegap:我的Javascript代码适用于浏览器,但不适用于Android模拟器或设备
- Phonegap Android项目适用于模拟器,而不是实际的手机
- JavaScript 不会在模拟器(Android 中的 PhoneGap)中执行
- WebSocket 无法连接到 Android 模拟器
- html5 SessionStorage没有'不能在android模拟器中工作
- Javascript不在android和ripple模拟器上运行
- 在Android 4.4.2 (API 19)模拟器上生成未捕获TypeError和未捕获ReferenceError错
- Phonegap不能在android模拟器上工作(未找到index.html)
- Android模拟器关闭使用telnet通过appium脚本
- AppMobi, html5音效适用于模拟器和android,但不适用于iphone
- jquery 1.6.2适用于Android 2.1模拟器,但不适用于三星Galaxy S
- 如何在android 3.0模拟器上安装google chrome
- 如何为Android 2.2模拟器设置阿拉伯语配置
- 在phonegap中使用javascript (sencha touch)时,Android模拟器中的参考错误
- 不幸的是,应用程序在添加webview后在android模拟器中停止了