如何在Jetty 9中将HTTPConnection升级为WebsocketConnection



我一直在阅读Jetty 9的文档,他们似乎已经去掉了Jetty套接字连接器。所以现在我们有了一个通用的ServerConnector,我们将HTTPConnection"升级"为WebSocket连接。我已经阅读了关于Socket与WebSocket的文档(Socket和WebSocket之间的区别?)以及该答案中链接的所有内容。我的问题是:

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

2) 我正在构建一个桌面应用程序,它也连接到我正在编写的服务器。我需要模拟TCP连接,WebSocketConnection对我有用吗?我之所以这么问,是因为我大多在浏览器的上下文中听说WebSockets,我想确保它是我可以在客户端应用程序中使用的东西。

谢谢!

WebSocket不是一个裸TCP连接,让我们先解决这个问题。

它是一种成帧协议,用于TEXT、BINARY和CONTROL帧(CONTROL帧是用于PING、PONG、CLOSE等事物的微小帧)

最好阅读官方协议规范以更好地理解这一点:RFC-6455

客户端不需要是浏览器,客户端可以是任何能够发出web请求的应用程序。

如果这符合您的需要,请继续阅读。

Jetty本身使用本机API提供了WebSocket服务器和WebSocket客户端实现,并且还支持javax.websocket标准(也就是JSR-356)。

至于JettyWebSocketServer,它在内部执行org.eclipse.jetty.websocket.server.WebSocketFactoryupgrade()私有方法中的升级。

如果您选择在Jetty上试用WebSocket,请阅读文档并从本机API或javax.websocket API中进行选择,其中任何一种都可以工作。

如果你想了解这些API之间的差异,实际上有一个不同的问题/答案。

回答Q1)

我认为对于你的第一个问题,这将有所帮助。有关更多详细信息,请参阅给定的链接。Jetty提供了通过使用WebSocketServlet桥接Servlet将WebSocket端点连接到Servlet路径规范的能力。在内部,Jetty管理到WebSocket的HTTP升级以及从HTTP连接到WebSocketConnection的迁移

链接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

相关内容

  • 没有找到相关文章

最新更新