0

我一直在阅读 Jetty 9 的文档,他们似乎已经摆脱了 Jetty Socket Connector。所以现在我们有一个通用的 ServerConnector 并且我们“升级”和 HTTPConnection 到一个 WebSocket 连接。我已阅读有关 Socket 与 WebSocket 的文档(socket 和 websocket 之间的区别?)以及该答案中链接的所有内容。我的问题是:

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

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

谢谢!

4

2 回答 2

1

WebSocket 不是裸 TCP 连接,让我们先把它排除在外。

它是一个帧协议,用于 TEXT、BINARY 和 CONTROL 帧(控制帧是用于 PING、PONG、CLOSE 之类的小帧)

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

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

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

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

至于 Jetty WebSocket Server,它内部在org.eclipse.jetty.websocket.server.WebSocketFactory upgrade()私有方法中执行升级。

如果您选择在 Jetty 上试验 WebSocket,请阅读文档并从本机 API 或javax.websocketAPI 中进行选择,任何一个都可以。

如果您想了解这些 API 的区别,实际上有一个不同的问题/答案

于 2014-10-04T14:14:54.210 回答
0

Q1的答案)

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

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

Q2的答案)

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

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

于 2014-10-04T07:35:38.593 回答