Java websocket草案拒绝握手

我正在研究
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 -=-=-=- */
...

这就是破坏,没有指定协议导致我的“拒绝握手”错误消息.

请注意上面的“拒绝握手”有几个原因,但在我的情况下,这是缺少空协议…

点赞