クライアントは、WebSocketコネクション確立時に、対応可能なサブプロトコル一覧をSec-WebSocket-Protocolヘッダで提示します。
OkHttpではRequestクラスでヘッダを追加出来ます。
そのClientが送るリクエスト全てまたは条件を満たすものに追加したいならInterceptorを使用しましょう。
今回のケースではWebSocketでのrequestはひとつだったので使いませんでした。
サブプロトコル名はアプリケーション側で勝手に決めて大丈夫なものなので、各自サーバが対応する適切なものに変えましょう。
Interceptorを使用しないとき
Request request = new Request.Builder()
.addHeader("Sec-WebSocket-Protocol", "test")
.url(WS_URL)
.build();
Interceptorを使用するとき
Interceptor interceptor = new Interceptor() {
@Override
public Response intercept(Chain chain) throws IOException {
Request req = chain.request()
.newBuilder()
.addHeader("Sec-WebSocket-Protocol", "test")
.build();
return chain.proceed(req);
}
};
OkHttpClient client = new OkHttpClient.Builder()
.addInterceptor(interceptor)
.build();