2012-02-10 79 views
10

我已经建立了一个系统,它有一个运行在服务器上的Java程序和一个嵌入在客户端浏览器中的页面上的Java小应用程序,两个通过Java套接字进行通信。我想知道是否可以从Java applet切换到HTML5和javascript,在客户端使用WebSocket与服务器上的Java套接字进行通信。您可以将HTML5 Web套接字连接到Java套接字吗?

有没有简单的方法使WebSocket与Java Socket通信?

+2

[This](http://stackoverflow.com/q/3202188/1101070)问题/答案可能是你要找的。您尚未提及有关您的环境的任何详细信息,但该答案非常全面。 – 2012-02-10 14:51:26

+0

要简洁地回答这个问题:不,您无法将Java Socket连接到WebSocket。但是,在那里有用于Java的服务器端WebSocket实现。 – BCarpe 2012-02-10 18:13:41

+0

我需要采取其中之一,并修改我现有的服务器程序使用它传递其数据。 – BCarpe 2012-02-10 18:16:09

回答

14

有没有简单的方法使WebSocket与Java Socket通信?

据我所知,WebSocket的工作原理是客户端打开端口80连接到服务器端,并向服务器发送变体HTTP 1.1请求来协商WebSocket连接。如果服务器认识到这一点,它将发送适当的响应,然后允许仍然打开的TCP连接用于全双工客户端 - 服务器交互。

看起来好像有可能很快就把服务器端的那个只是理解为WebSocket协商而不是完整的HTTP。不过,我认为你最好查看现有的WebSocket实现,包括嵌入在HTTP服务器/协议栈中的实现。

This Wikipedia page比较了一些WebSocket实现,并应该帮助您决定使用哪个服务器端实现。

但是要直接回答您的字面问题,WebSocket客户端只能连接到支持WebSocket的服务器;即可以执行初始协商的那个。 (在客户端,你可以实现从一个裸套接字开始,但你需要实现所有的“HTTP东西”...的设置阶段...)

4

不,你不能通信使用客户端WebSockets的常规套接字。

WebSockets是特殊的HTTP请求,在HTTP头中有一个升级,以及建立连接的标准协议(请参阅official RFC doc)。