我正在研究
android(
Java)使用
TooTallNate’s java websockets从
this tutorial开始使用android上的websockets来连接ws://但是我收到错误草稿org.java_websocket.drafts.Draft_10@4560b1d0拒绝握手.我尝试了他们的其他草案版本,但他们都没有工作. 最佳答案 首先,你想使用Draft_6455,它是当前的规范,其余的可能会或可能不会在不同的服务器上可靠地工作.草案对象的构造函数采用List< IProtocol>.如果未指定的协议与服务器提供的协议匹配,则将拒绝握手.
public Draft_6455( List<IExtension> inputExtensions , List<IProtocol> inputProtocols )
public Draft_6455( List<IExtension> inputExtensions , List<IProtocol> inputProtocols, int inputMaxFrameSize )
我使用最新版本的TooTallNate的Java Websockets遇到了类似的问题,我的代码是这样的:
knownExtensions = new java.util.ArrayList();
knownProtocols = new java.util.ArrayList();
if(this._protocol){
knownProtocols.add(new org.java_websocket.protocols.Protocol(this._protocol));
}
this._socket = new _WebSocket(uri, new org.java_websocket.drafts.Draft_6455(knownExtensions, knownProtocols), toHashMap(this._headers), this._timeout);
您必须至少有一个有效的协议(即使它是一个空字符串),或者您得到上面提到的错误.所以我改变了我的代码:
...
if(this._protocol){
knownProtocols.add(new org.java_websocket.protocols.Protocol(this._protocol));
}
/* -=-=-=- NEW ADDED CODE -=-=-=- */
else {
knownProtocols.add(new org.java_websocket.protocols.Protocol(""));
}
/* -=-=-=- END NEW ADDED CODE -=-=-=- */
...
这就是破坏,没有指定协议导致我的“拒绝握手”错误消息.
请注意上面的“拒绝握手”有几个原因,但在我的情况下,这是缺少空协议…