我的socket.io安卓代码有问题。
服务器使用socket.io 0.9.6在安卓系统上,我使用的是来自nkzawa 的socket-io-client-0.1.3.jar和engine-io-client.0.2.3.jar
在连接到myChannel
之后,发射myConnect
。之后,如果某个东西随着新值发生了变化,我总是会收到一条"something_changed"的消息。我在js中的版本运行良好,但在android上我只得到:
EVENT_CONNECT_ERROR: com.github.nkzawa.engineio.client.EngineIOException: xhr poll error
有什么办法吗?
socket = IO.socket(WEBSOCKET + "myChannel");
socket.on(Socket.EVENT_CONNECT, new Emitter.Listener() {
@Override
public void call(Object... args) {
socket.emit("myConnect", userinfo);
}
}).on(Socket.EVENT_CONNECT_ERROR, new Emitter.Listener() {
@Override
public void call(Object... arg0) {
Log.e("EVENT_CONNECT_ERROR", arg0[0].toString());
}
}).on("something_changed", new Emitter.Listener() {
@Override
public void call(Object... args) {
JSONObject obj = (JSONObject) args[0];
Log.i("something_changed", obj.toString());
}
});
socket.connect();
我也遇到了同样的问题。原因是互联网访问权限。
在清单中添加internet权限。
<uses-permission android:name="android.permission.INTERNET" ></uses-permission>
它应该起作用。