Socket.io 0.9 使用 Gottox/socket.io-java-client 在 Android 上发出响应
Socket.io 0.9 emit respond on Android, using Gottox/socket.io-java-client
如果有人能告诉我,我的代码有什么问题?
我真的花了很多时间试图弄清楚这个问题。
在成功连接到服务器后,您可以在日志中看到的 "chatinfo" 事件自动传递。
我使用:
Gottox/socket.io-java-client 在 Android 设备上,
http://socket.io/ 服务器上的 0.9.16,
授权是通过在建立连接时在 header 中传递令牌。
代码:
private void getList(SocketIO socket) {
try {
socket.emit(EventList.GETLIST, new JSONObject().put("sortByDate", true));
Log.v("getList", "emitted");
} catch (JSONException e) {
e.printStackTrace();
Log.v("getList", "not emitted");
}
}
代码:
@Override
public void on(String s, IOAcknowledge ioAcknowledge, Object... objects) {
JSONObject respond = (JSONObject) objects[0];
Log.d("testFromOn", "String s = " + s);
Log.d("testFromOn", "on" + respond);
switch (s) {
case GETLIST:
Log.d("GETLIST", "GETLIST responce: " + s);
break;
日志
I/io.socket﹕ < 1::
D/test﹕ onConnect
I/io.socket﹕ < 5:::{"name":"chatinfo","args":[{"onlineCount":0,"onlineFriendsCount":0,"unreadCount":7,"unreadFriendsCount":0,"userInfo":{"avatar":"1415903272343.jpg","url":"/user/5431b4955518085d5db4be23","_id":"5431b4955518085d5db4be23"}}]}
D/testFromOn﹕ String s = chatinfo
D/testFromOn﹕ on{"onlineCount":0,"onlineFriendsCount":0,"unreadCount":7,"unreadFriendsCount":0,"userInfo":{"avatar":"1415903272343.jpg","url":"\/user\/5431b4955518085d5db4be23","_id":"5431b4955518085d5db4be23"}}
I/io.socket﹕ > 5:::{"name":"getlist","args":[{"sortByDate":true}]}
V/getList﹕ emitted
I/io.socket﹕ > 2::
I/io.socket﹕ > 5:::{"name":"getlist","args":[{"sortByDate":true}]}
V/getList﹕ emitted
I/io.socket﹕ < 2::
I/io.socket﹕ > 2::
最后我的问题不是那么严重。我只是错过了向我的发射添加一个参数。所以没有人捕捉到服务器的响应。
唯一的一件事是添加:
IOAcknowledge ack = new IOAcknowledge() {
@Override
public void ack(Object... args) {
if (args.length > 0) {
Log.d("SocketIO", "" + args[0]);
}
}
}
并将 IOAcknowledge 传递给 emit 方法:
socket.emit(EventList.GETLIST, ack, new JSONObject().put("sortByDate", true));
如果有人能告诉我,我的代码有什么问题? 我真的花了很多时间试图弄清楚这个问题。 在成功连接到服务器后,您可以在日志中看到的 "chatinfo" 事件自动传递。
我使用: Gottox/socket.io-java-client 在 Android 设备上, http://socket.io/ 服务器上的 0.9.16, 授权是通过在建立连接时在 header 中传递令牌。
代码:
private void getList(SocketIO socket) {
try {
socket.emit(EventList.GETLIST, new JSONObject().put("sortByDate", true));
Log.v("getList", "emitted");
} catch (JSONException e) {
e.printStackTrace();
Log.v("getList", "not emitted");
}
}
代码:
@Override
public void on(String s, IOAcknowledge ioAcknowledge, Object... objects) {
JSONObject respond = (JSONObject) objects[0];
Log.d("testFromOn", "String s = " + s);
Log.d("testFromOn", "on" + respond);
switch (s) {
case GETLIST:
Log.d("GETLIST", "GETLIST responce: " + s);
break;
日志
I/io.socket﹕ < 1::
D/test﹕ onConnect
I/io.socket﹕ < 5:::{"name":"chatinfo","args":[{"onlineCount":0,"onlineFriendsCount":0,"unreadCount":7,"unreadFriendsCount":0,"userInfo":{"avatar":"1415903272343.jpg","url":"/user/5431b4955518085d5db4be23","_id":"5431b4955518085d5db4be23"}}]}
D/testFromOn﹕ String s = chatinfo
D/testFromOn﹕ on{"onlineCount":0,"onlineFriendsCount":0,"unreadCount":7,"unreadFriendsCount":0,"userInfo":{"avatar":"1415903272343.jpg","url":"\/user\/5431b4955518085d5db4be23","_id":"5431b4955518085d5db4be23"}}
I/io.socket﹕ > 5:::{"name":"getlist","args":[{"sortByDate":true}]}
V/getList﹕ emitted
I/io.socket﹕ > 2::
I/io.socket﹕ > 5:::{"name":"getlist","args":[{"sortByDate":true}]}
V/getList﹕ emitted
I/io.socket﹕ < 2::
I/io.socket﹕ > 2::
最后我的问题不是那么严重。我只是错过了向我的发射添加一个参数。所以没有人捕捉到服务器的响应。
唯一的一件事是添加:
IOAcknowledge ack = new IOAcknowledge() {
@Override
public void ack(Object... args) {
if (args.length > 0) {
Log.d("SocketIO", "" + args[0]);
}
}
}
并将 IOAcknowledge 传递给 emit 方法:
socket.emit(EventList.GETLIST, ack, new JSONObject().put("sortByDate", true));