如何使用Koush AndroidSync关闭/重试/管理WebSocket?
我正在为WebSocket客户端使用Koush的AndroidSync。我的代码遵循at的示例,并且有效。(下面复制了一个示例。) 我需要我的应用程序在启动时打开websocket,但是,我需要处理一些问题: A) 我需要允许用户更改websocket服务器的地址。在这种情况下,我需要关闭现有的websocket(可能已经失败),并打开一个指向新服务器的websocket B) 服务器可能已关闭或不可用。在这种情况下,我想向活动汇报。目前它只是默默地失败了 因此,按照重要性的顺序:如何使用Koush AndroidSync关闭/重试/管理WebSocket?,android,websocket,androidasync-koush,Android,Websocket,Androidasync Koush,我正在为WebSocket客户端使用Koush的AndroidSync。我的代码遵循at的示例,并且有效。(下面复制了一个示例。) 我需要我的应用程序在启动时打开websocket,但是,我需要处理一些问题: A) 我需要允许用户更改websocket服务器的地址。在这种情况下,我需要关闭现有的websocket(可能已经失败),并打开一个指向新服务器的websocket B) 服务器可能已关闭或不可用。在这种情况下,我想向活动汇报。目前它只是默默地失败了 因此,按照重要性的顺序: 如何关闭we
AsyncHttpClient.getDefaultInstance().websocket(get,"my-protocol",new WebSocketConnectCallback(){
@Override
public void onCompleted(Exception ex,WebSocket webSocket){
if(ex!=null){
ex.printStackTrace();
return;
}
webSocket.send("a string");
webSocket.send(new byte[10]);
webSocket.setStringCallback(new StringCallback(){
public void onStringAvailable(String s){
System.out.println("I got a string: "+s);
}
});
webSocket.setDataCallback(new DataCallback(){
public void onDataAvailable(ByteBufferList byteBufferList){
System.out.println("I got some bytes!");
// note that this data has been read
byteBufferList.recycle();
}
});
}
});
我阅读了的源代码
如何关闭
WebSocket
接口从DataEmitter
接口继承close()
方法。
调用close()
方法将关闭WebSocket连接,但请注意
实现(WebSocketImpl.close()
)不执行
那是
要求的
另外,WebSocketImpl
中的onDisconnect()
在收到请求时不执行结束握手
因此,在任何情况下,都不会执行结束握手。但事实并非如此
如果不介意服务器端的错误日志,这将是一个严重的问题
如何重试&如何提供通知
您可以通过设置回调来检测断开连接
setClosedCallback()
方法和setEndCallback()
方法,但我不确定
如何重试以及如何提供通知取决于您。你能行
在检测到断开连接后,按您的喜好进行操作
推荐
如果希望接收WebSocket上发生的细粒度事件
想知道有关错误的详细信息,
试试。
它的
有许多回调入口点,它定义了细粒度
.
新的WebSocket客户端库执行以下操作:
正确。您能否提供一个如何从WebSocketConnectCallback外部调用close()的示例?我不清楚如何修改示例代码以执行关闭。例如,如果我定义mWebSocketConnectCallback=newWebCokeCtConectCallback(){…};mAsyncHttpClient=AsyncHttpClient.getDefaultInstance();websocket(mHostAddress,null,mWebSocketConnectCallback);我可以使用mAsyncHttpClient关闭连接吗?我还没有尝试过,但是这个怎么样?Future f=AsyncHttpClient.getDefaultInstance().websocket(…);WebSocket ws=f.get();ws.close();这适用于关闭WS。我仍然需要查看setClosedCallback()和setEndCallback()来真正管理连接。我还将介绍nv websocket客户端,因为管理我的连接非常重要,所以我将看看该库是否为我提供了一种简单的方法。我真的需要一种简单但高度可靠的方法,通过不可靠的网络链接创建、关闭和维护websocket。谢谢我认为你们的图书馆很容易使用和维护。我在搜索同样问题的信息。同意@March3April4。Takahiko的库更容易实现,并且更好地处理websocket断开连接。还可以更容易地实现回调。我建议迁移库,而不是尝试解决它。我花了大约一个小时进行故障排除并找出解决方法,但花了5分钟迁移到Takahiko的库。