Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何检查WebSocket是否已连接_Java_Android_Performance_Websocket_Androidasync Koush - Fatal编程技术网

Java 如何检查WebSocket是否已连接

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

我使用KOUSH库创建了一个Websocket服务类

现在我想检查Websocket是否从mainActivity连接到我的服务器。你知道我怎么查这个吗? 谢谢


解决方案是将此函数的结果保存到本地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()
   }
}