如何修复给出NetworkError的websockets:400不支持的草案规范:13

时间:2012-07-19 16:06:26

标签: java websocket jetty maven-3

我正在尝试使用this website中的示例来学习如何在jetty中使用web-socket。我正在使用maven来收集依赖项。

当我在localhost:8082中打开页面时,页面出现(这是一个聊天客户端),但是如果我尝试登录(这是首先使用网络套接字),则没有任何反应。使用Firebug,我确定我收到的错误消息如下:

"NetworkError: 400 Unsupported draft specification: 13 - http://localhost:8082/chat"

以及

Firefox can't establish a connection to the server at ws://localhost:8082/chat

我检查了jar(版本7.5.0.RC1)的Web套接字,结果发现WebSocketFactory不支持Sec-WebSocket-Draft 13。

我将罐子更新到最新版本(8.0.3.v20111011),它支持版本13:

    switch (draft)
    {
        case -1:
        case 0:
            extensions=Collections.emptyList();
            connection = new WebSocketConnectionD00(websocket, endp, _buffers, http.getTimeStamp(), _maxIdleTime, protocol);
            break;
        case 1:
        case 2:
        case 3:
        case 4:
        case 5:
        case 6: 
            extensions=Collections.emptyList();
            connection = new WebSocketConnectionD06(websocket, endp, _buffers, http.getTimeStamp(), _maxIdleTime, protocol);
            break;
        case 7:
        case 8:
            extensions= initExtensions(extensions_requested,8-WebSocketConnectionD08.OP_EXT_DATA, 16-WebSocketConnectionD08.OP_EXT_CTRL,3);
            connection = new WebSocketConnectionD08(websocket, endp, _buffers, http.getTimeStamp(), _maxIdleTime, protocol,extensions,draft);
            break;
        case 13:
            extensions= initExtensions(extensions_requested,8-WebSocketConnectionD13.OP_EXT_DATA, 16-WebSocketConnectionD13.OP_EXT_CTRL,3);
            connection = new WebSocketConnectionD13(websocket, endp, _buffers, http.getTimeStamp(), _maxIdleTime, protocol,extensions,draft);
            break;
        default:
            LOG.warn("Unsupported Websocket version: "+draft);
            response.setHeader("Sec-WebSocket-Version","0,6,8,13");
            throw new HttpException(400, "Unsupported draft specification: " + draft);
    }


......但我仍然得到同样的错误。最重要的是,我现在在代码中遇到错误,说不推荐使用构造函数WebSocketClient(),并且WebSocketClient中不存在我使用的许多方法。

所以我想我的问题是:

1)是什么导致它运行版本13,如何让它使用版本8?
2)是否有其他人试图使用本教程并遇到麻烦? 3)有没有更简单的方法来学习websockets(可能这个例子已经过时了)?

感谢您的帮助。

0 个答案:

没有答案