首页 > 解决方案 > 对于缺少所需协议和/或密码套件的客户端,nv-websocket-client (2.14) 握手失败

问题描述

WebSocketFactory requires a SSLSocketFactory and uses SSLSocketFactory.getDefault() if not set directly or indirectly by SSLContext

WebSocket is created by WebSocketFactory.createSocket(URI, timeout)
WebSocket.connect calls WebSocket.shakeHands
WebSocket.shakeHands calls socket.getOutputStream to get a stream to send its handshakeBuilder handshake true
Call to socket.getOutputStream triggers OpenSSLSocketImpl.startHandshake
OpenSSLSocketImpl.startHandshake calls OpenSSLSocketImpl.setEnabledCipherSuites and OpenSSLSocketImpl.setEnabledCipherSuites

握手在客户端上失败,例如。android API < 21,因为缺少必需的协议和密码套件

这意味着协议和密码套件必须在我们可以调用之前WebSocketFactory或之前设置WebSocketWebSocket.connect

WebSocket 方法只喜欢clearProtocols, removeProtocoladdProtocol影响WebSocket.handshakeBuilder(而不是使用的协议和密码套件OpenSSLSocketImpl.startHandshake

如何设置所需的协议和密码套件OpenSSLSocketImpl.startHandshake

标签: javaandroidsslwebsockethandshake

解决方案


推荐阅读