【问题标题】:okhttp3 websocket dynamic headerokhttp3 websocket 动态标头
【发布时间】:2017-07-19 04:38:53
【问题描述】:

我正在尝试创建一个 websocket 并在发送的每条消息中动态重新计算其标头。有可能吗?

我试图使用拦截器,但只被调用一次。

public void run() {

    // only open a websocket if there aren't websockets already open
    if (this.webSocket == null || !this.openingWS) {

        this.openingWS = true;

        wsBuilder = new OkHttpClient.Builder();
        OkHttpClient client = wsBuilder.addInterceptor(this)
                .readTimeout(0, TimeUnit.MILLISECONDS)
                .build();

        Request request = new Request.Builder()
                    .url("wss://...")
                    .build();


        client.newWebSocket(request, this);

        // Trigger shutdown of the dispatcher's executor so this process can exit cleanly.
        client.dispatcher().executorService().shutdown();
    }
}

@Override public void onOpen(WebSocket webSocket, Response response) {
    this.openingWS = false;     // already open
    this.webSocket = webSocket; // storing websocket for future usages
    if (listener != null) listener.onWSOpen();
}

public void sendCommand(String cmd) {
    System.out.println("SEND " + cmd);
    if (webSocket != null) webSocket.send(cmd);
}

这个类正在实现拦截器

public Response intercept(Chain chain) throws IOException {
    Request originalRequest = chain.request();

    if (!isSpecial()) return chain.proceed(originalRequest);

    okhttp3.Request.Builder builder = originalRequest.newBuilder()
            .addHeader("text", "...")
            .addHeader("dfds", "...");


    Request compressedRequest = builder.build();

    return chain.proceed(compressedRequest);

}

在标头中发送的身份验证代码将每 X 秒/分钟更改一次。 如果无法动态更改标头,那么处理这种连接的最佳方法是什么?

感谢您的帮助。

【问题讨论】:

    标签: java android websocket okhttp3


    【解决方案1】:

    我认为标头仅在您请求连接时第一次发送,稍后取决于客户端和服务器之间的帧。

    因此,如果您想通知服务器您已更改标头,请使用新标头发送消息。或者您可以关闭连接并使用新标头开始新的连接。

    【讨论】:

      猜你喜欢
      • 2018-07-29
      • 2017-12-04
      • 2013-08-19
      • 2013-09-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-23
      • 2020-09-06
      • 2019-05-12
      相关资源
      最近更新 更多