Lou*_*rda 3 android websocket androidasync-koush
我正在使用AndroidAsync koush低级网络协议库.我正在使用WebSocket连接到服务器.我能够连接,发送/接收消息和断开连接.我的断开时间很长.服务器平均没有检测到断开连接59秒.
为了重现这个问题,我连接了WebSocket,授权并每隔10秒开始ping一次.然后我打开飞机模式,我的网络连接下降.此时调用setClosedCallback方法.以下是我记录此消息的方式:
private WebSocket mConnection;
private WebSocketConnectCallback mSocketCallback = new WebSocketConnectCallback() {
@Override
public void onCompleted(Exception ex, WebSocket webSocket) {
...
webSocket.setClosedCallback(new CompletedCallback() {
@Override
public void onCompleted(Exception ex) {
Log.d("websocket", "WebSocket closed");
if (ex != null && ex.getMessage() != null) {
Log.e("websocket", "WebSocket closed exception: " + ex.getMessage());
}
disconnect();
}
});
}
};
private void disconnect() {
mPingHandler.removeCallbacks(pingRunnable);
if (mConnection != null) {
mConnection.close();
mConnection = null;
}
}
Run Code Online (Sandbox Code Playgroud)
这是让我知道WebSocket已关闭的日志消息:
WebSocket关闭异常:recvfrom失败:ETIMEDOUT(连接超时)
但是,我们的服务器大约59秒没有收到断开连接消息.我们的服务器正在使用这些库:
有没有办法加快我的速度?是否有一个套接字级别超时我可以设置为较低的值,以便我的服务器人员更快地获得断开连接消息?
由于AndroidAsync没有实现关闭握手这是由需要RFC 6455(见本的详细信息),您的WebSocket服务器无法检测断线中的WebSocket的情况下.因此,服务器必须ETIMEDOUT 在TCP/IP的上下文中等待检测断开连接.
使用符合RFC 6455的WebSocket库并正确实现关闭握手.
| 归档时间: |
|
| 查看次数: |
1758 次 |
| 最近记录: |