同时服务 HTTP 和 WS 客户端

Posted

技术标签:

【中文标题】同时服务 HTTP 和 WS 客户端【英文标题】:Serve both HTTP and WS clients 【发布时间】:2016-02-05 06:04:38 【问题描述】:

是否可以同时实现基于 Java 的服务器 HTTP 请求和监听 websockets?我想将 JSON 对象响应给 HTTP 客户端,将客户对象响应给 websocket 客户端。

【问题讨论】:

每个 Java EE 服务器都支持这一点。所以真的很难理解为什么你在问这个问题时带有 [java-ee] 标签。这样的问题意味着您实际上根本从未尝试/使用过 Java EE 服务器,而只想自行开发( :X )“服务器”。出于这个原因,我去掉了 [java-ee] 标签。 【参考方案1】:

是的,这是可能的。 Web 服务器无论如何都会响应 HTTP 请求,因为您已经实现了与客户端请求的路径匹配的 servlet/s。您可以使用 servlet 容器来托管您的 servlet。当您说 Sockets(not web sockets) 时,我假设您正在谈论打开一个端口,Java 服务器将在该端口上侦听可能通过内部网络或来自其他网络的任何基于 UDP 或 TCP 的请求。您可以找到许多用于实现侦听给定端口的 UDP 或 TCP 服务器的源代码示例。

另请注意,如果端口对外部网络可见,则在服务器上打开多个端口会带来安全威胁。

【讨论】:

你的意思是两个独立的程序应该在服务器(物理服务器计算机)中运行?一个是说tomcat上的servlet,另一个是jvm上的socket服务器? 没有。您可以在同一个 JVM 上运行两者。当您有一个正常工作的 Java Web 应用程序时,您可以添加另一个类,该类也将在给定端口上侦听传入请求

以上是关于同时服务 HTTP 和 WS 客户端的主要内容,如果未能解决你的问题,请参考以下文章

TLS与HTTP摘要与WS-Security

如何在SpringMVC项目中部署WebService服务并打包生成客户端

JAX-WS 客户端:跨多个服务维护会话/cookie

如何以编程方式设置 JAX-WS 客户端的 SSLContext?

Apache xml-rpc 客户端和服务器实现

基于net模块,从零实现websocket(ws模块)