【发布时间】:2018-07-05 14:14:27
【问题描述】:
当使用socket.io 发出带有回调的消息时,如果套接字在回答之前断开连接(或根本不回答),则回调函数将永远挂起。在其他网络连接性较低且发出套接字但存在的情况下如果发射成功,则没有回调。
在这些情况下,我想在发出回调中实现超时。但是 ACK 消息没有超时。
这是我的套接字发射代码ACK
JSONObject obj = new JSONObject();
try {
obj.put("device_id", deviceVO.getDeviceId());
obj.put("device_status", deviceVO.getOldStatus());
} catch (JSONException e) {
e.printStackTrace();
}
mSocket.emit("socketChangeDevice", obj, new Ack() {
@Override
public void call(Object... args) {
if(args!=null){
Ack ack = (Ack) args[args.length - 1];
ack.call();
Log.d("ACK_SOCKET","isAck : "+ ack);
}
}
});
有没有更好的方法在客户端断开连接时返回失败的回调?我需要手动实现超时吗?
【问题讨论】: