在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ weex_devtools中的WeexInspector問題

weex_devtools中的WeexInspector問題

WeexInspector中引入最新的0.13.4包后,按照官方教程添加了CustomWebSocketClient來適配高版本的okhttp,但是在調試應用過程中出現(xiàn)了readtimeout的錯誤,導致socket連接失敗,請問有誰知道解決辦法嗎?

public class CustomWebSocketClient implements IWebSocketClient {

    private WebSocket ws;

    @Override
    public boolean isOpen() {
        return ws != null;
    }

    @Override
    public void connect(String wsAddress, final WSListener listener) {
        OkHttpClient okHttpClient = new OkHttpClient();
        okHttpClient.setConnectTimeout(30, TimeUnit.SECONDS);
        okHttpClient.setReadTimeout(5, TimeUnit.SECONDS);
        okHttpClient.setWriteTimeout(30, TimeUnit.SECONDS);

        Request request = new Request.Builder().url(wsAddress).build();
        WebSocketCall webSocketCall = WebSocketCall.create(okHttpClient, request);
        webSocketCall.enqueue(new WebSocketListener() {
            @Override
            public void onOpen(WebSocket webSocket, Request request, Response response) throws IOException {
                ws = webSocket;
                listener.onOpen();
            }

            @Override
            public void onMessage(BufferedSource payload, WebSocket.PayloadType type) throws IOException {
               if (WebSocket.PayloadType.TEXT == type) {
                   listener.onMessage(payload.readUtf8());
                   //文檔中沒有這句代碼,但是應該是要加上,否則報錯
                   payload.close();
               }
            }

            @Override
            public void onPong(Buffer payload) {
                //ignore
            }

            @Override
            public void onClose(int code, String reason) {
                listener.onClose();
            }

            @Override
            public void onFailure(IOException e) {
                listener.onFailure(e);
            }
        });
    }

    @Override
    public void close() {
        if (ws != null) {
            try {
                ws.close(CloseCodes.NORMAL_CLOSURE, "Normal closure");
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    @Override
    public void sendMessage(int requestId, String message) {
        if (ws != null) {
            try {
                ws.sendMessage(WebSocket.PayloadType.TEXT, new Buffer().writeString(message, Charset.defaultCharset()));
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}
回答
編輯回答
落殤

應該是你代碼編寫的問題。

話說你在哪里看到的你說的那篇教程?

2017年5月27日 20:03
編輯回答
尋仙

我也遇到了,我是在chrome上進行調試,只要打開NetWork開關,app就會報錯: java.lang.NoClassDefFoundError: Failed resolution of: Lcom/taobao/weex/devtools/inspector/network/NetworkEventReporterImpl , 翻了源碼里面是有這個類的,但是這個類實現(xiàn)了一個接口NetworkEventReporter卻沒有,整個weex-inspector包里面都沒有,這是怎么回事?

2018年9月15日 17:09
編輯回答
朕略萌

問題解決了:
1.官方的代碼有問題,在onMessage里需要加一句payload.close()
2.參照官方的okhttpClient實現(xiàn),我將readTimeout設置為0,剩下的都設置為30s

2018年6月2日 13:18