java - 对于缺少所需协议和/或密码套件的客户端,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
或之前设置WebSocket
WebSocket.connect
WebSocket 方法只喜欢clearProtocols, removeProtocol
和addProtocol
影响WebSocket.handshakeBuilder
(而不是使用的协议和密码套件OpenSSLSocketImpl.startHandshake
)
如何设置所需的协议和密码套件OpenSSLSocketImpl.startHandshake
?
解决方案
推荐阅读
- objective-c - 像素处理的快速性能
- python - 根据传递的参数数量更改返回值的数量
- php - 在 Laravel 中不工作 Request::is()
- javascript - 在ajax中动态附加的元素上添加jquery事件
- php - 如何在 ahref 中传递 sparql 查询变量以在新页面上发布
- python - 如何在 Python 中从 SQLAlchemy 将可为空的 NUMERIC 值传递到 PostgreSQL
- arrays - 在 VBA 中将数据标签设置为 Range 中的值
- c# - 远程服务器返回错误:(403) Forbidden with Google Maps
- flutter - 获取访问令牌的异常 Flutter google 签名
- java - 添加 jaxb2-basics-annotate 插件会导致不再生成构建器函数