我正在尝试使用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(可能这个例子已经过时了)?
感谢您的帮助。