我正在尝试使用本网站的示例来学习如何在码头中使用 web-socket。我正在使用 Maven 来收集依赖项。
当我在 localhost:8082 中打开页面时,页面出现(它是一个聊天客户端),但是如果我尝试登录(这是首先使用 web-sockets 的时候),什么也没有发生。使用 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
我检查了 Web 套接字的 jar(版本 7.5.0.RC1),结果发现 WebSocketFactory 不支持 Sec-WebSocket-Draft 13。
我将 jar 更新到最新版本(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(也许这个例子已经过时了)?
谢谢你的帮助。