Java 如何检查WebSocket是否已连接
我使用KOUSH库创建了一个Websocket服务类 现在我想检查Websocket是否从mainActivity连接到我的服务器。你知道我怎么查这个吗? 谢谢Java 如何检查WebSocket是否已连接,java,android,performance,websocket,androidasync-koush,Java,Android,Performance,Websocket,Androidasync Koush,我使用KOUSH库创建了一个Websocket服务类 现在我想检查Websocket是否从mainActivity连接到我的服务器。你知道我怎么查这个吗? 谢谢 解决方案是将此函数的结果保存到本地Websocket变量,然后检查其状态: WebSocket webSocket=null; try { webSocket=AsyncHttpClient.getDefaultInstance().websocket(get, "my-protocol", new WebSocketConne
解决方案是将此函数的结果保存到本地Websocket变量,然后检查其状态:
WebSocket webSocket=null;
try {
webSocket=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();
}
});
}
}).get();
}catch(InterruptedException e){
//handle exception
}catch(ExecutionException e){
//handle exception
}
if(websocket!=null && websocket.isOpen()){
//websocket is working fine
}
您可以使用其他语句,如websocket.isClosed() 您可以这样做:
if (mWebSocketClient.isOpen) {
mWebSocketClient.send(jObj.toString())
} else {
try {
client.connectWebSocket(p0)
mWebSocketClient.send(jObj.toString())
} catch (e : Exception){
Toast.makeText(p0, "not connected $e", Toast.LENGTH_LONG).show()
}
}
isClosed()
不会告诉您对等方是否已断开连接。这段代码写一个字符串和10个字节的垃圾。对等方必须做好接收的准备。只要尝试使用它并捕获异常即可。这会告诉你它是否连接。其他任何东西都在试图预测未来。当你测试它时,它可能是向上的,当你使用它时,它可能是向下的。那有什么用?
if (mWebSocketClient.isOpen) {
mWebSocketClient.send(jObj.toString())
} else {
try {
client.connectWebSocket(p0)
mWebSocketClient.send(jObj.toString())
} catch (e : Exception){
Toast.makeText(p0, "not connected $e", Toast.LENGTH_LONG).show()
}
}