2014-10-04 44 views
0

我一直在阅读Jetty 9的文档,他们似乎已经摆脱了Jetty Socket Connector。所以现在我们有一个通用的ServerConnector,我们将“升级”并将HTTPConnection连接到一个WebSocket连接。我已经阅读了有关Socket vs WebSocket(Difference between socket and websocket?)以及该答案中链接的所有文档。我的问题是:如何在Jetty 9中将HTTPConnection升级到WebsocketConnection?

1)如何从HTTPConnection升级到WebSocket连接?有人可以提供一些示例代码吗?

2)我正在构建一个桌面应用程序,连接到我正在写的服务器。我需要模拟一个TCP连接,WebSocketConnection会为我工作吗?我问这是因为我主要在浏览器的上下文中听说过WebSockets,我想确保它可以在我的客户端应用程序中使用。

谢谢!

回答

0

的WebSocket是不是赤裸裸的TCP连接,让我们说出来的第一方式。

它是一个框架协议,文本,二进制和控制帧(控制帧是对于像PING,PONG,CLOSE微小帧)

这将是最好看的官方协议规范,以更好地理解这个:RFC-6455

没有要求客户端是浏览器,客户端可以是任何能够提出Web请求的应用程序。

如果这符合你的需要,然后阅读。

Jetty本身提供了一个使用本地API的WebSocket服务器和WebSocket客户端实现,并且还支持javax.websocket标准(又名JSR-356)。

至于Jetty WebSocket服务器,它在内部执行org.eclipse.jetty.websocket.server.WebSocketFactoryupgrade()私有方法内的升级。

如果您选择在Jetty上使用WebSocket进行实验,请阅读文档并从API或API中选择一个,任何一个都可以工作。

如果您想了解这些API的差异,实际上有a different question/answer for that

+0

谢谢Joakim!总是去拯救。 – Crro 2014-10-06 23:28:20

0

答案Q1)

我想你的第一个问题,这将有助于。请参阅给定的链接了解更多详情。 Jetty提供了通过使用WebSocketServlet桥servlet将WebSocket端点连接到Servlet路径规格的能力。 在内部,Jetty管理HTTP升级到WebSocket并从HTTP连接迁移到WebSocket连接。

链接1:http://www.eclipse.org/jetty/documentation/current/jetty-websocket-server-api.html

回答Q2)

的WebSocket服务器和客户端的全双工的通信发生在与最初的TCP握手。 对于您的websocket客户端应用程序,可以肯定使用以下工作示例...它是一个纯JAVA WEBSOCKET客户端。我试过了,效果很好。

链路2:http://www.eclipse.org/jetty/documentation/current/jetty-websocket-client-api.html