我正在开发一款原生安卓应用程序, 我需要将我的应用程序连接到Sockjs服务器。 我尝试了使用Socket.IO、Autobahn、WebSockets进行连接,但都无法连接成功。 是否有适用于安卓的Sockjs客户端? 请帮忙,谢谢。
Socket.IO:
private void connectToSocket(String serverUrl, String accessKey) {
IO.Options opts = new IO.Options();
opts.forceNew = true;
opts.reconnection = true;
//opts.query = "accessKey="+accessKey;
String host = serverUrl;
try {
mSocket = IO.socket(host, opts);
} catch (URISyntaxException e) {
e.printStackTrace();
}
mSocket.on(Socket.EVENT_CONNECT_ERROR, onConnectError);
mSocket.on(Socket.EVENT_CONNECT_TIMEOUT, onConnectError);
mSocket.on(Socket.EVENT_CONNECT, onConnect);
mSocket.on("new message", onNewMessage);
mSocket.connect().emit("accessKey", accessKey);
if (mSocket.connected()) {
Log.d("SocketMsg: ", "Connected");
}
}
private Emitter.Listener onConnect = new Emitter.Listener() {
@Override
public void call(final Object... args) {
MainActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
Log.d("SocketMsg: ", args[0].toString());
//mSocket.emit("accessKey", accessKey);
Toast.makeText(MainActivity.this.getApplicationContext(),
"Connect", Toast.LENGTH_LONG).show();
for (Object o : args) {
Log.i("IO " + Socket.EVENT_CONNECT_ERROR, o.toString());
}
}
});
}
};
private Emitter.Listener onConnectError = new Emitter.Listener() {
@Override
public void call(final Object... args) {
MainActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
Log.d("SocketMsg: ", args[0].toString());
Toast.makeText(MainActivity.this.getApplicationContext(),
"Error", Toast.LENGTH_LONG).show();
for (Object o : args) {
Log.i("IO " + Socket.EVENT_CONNECT_ERROR, o.toString());
}
}
});
}
};
它正在出现“xhr轮询错误”。