Spring 4 WebSocket 配置端口
Posted
技术标签:
【中文标题】Spring 4 WebSocket 配置端口【英文标题】:Spring 4 WebSocket configure port 【发布时间】:2014-09-07 09:01:56 【问题描述】:使用 Spring 4 我需要配置 WebSocket 使用 HTTP 以外的其他端口。 换句话说,默认情况下用户对 HTTP 和 WebSocket 的访问如下:
http://server:9090/
ws://server:9090/
但我需要执行以下操作:
http://server:9090/
ws://server:9999/
在代码中我只有以下内容:
@Configuration
@EnableWebSocket
public class WebSocketConfig
implements WebSocketConfigurer
我也有处理程序:
Handler extends TextWebSocketHandler
Spring有这种能力吗?
【问题讨论】:
_ 使用 HTTP 以外的其他端口_ - 你能说得更具体些吗? @zeroflagL - 刚刚更新 【参考方案1】:AFAIK 所有当前的 websocket 实现都依赖于通过 HTTP 的握手。握手后,现有连接被升级。你没有得到一个新的,端口保持不变。基本上所有的 websocket 连接都是从 HTTP 连接开始的。
作为旁注,端口、IP 地址等是服务器的主题,而不是应用程序本身。
也许可以配置您的服务器,以便两个端口可用于一个应用程序,但它们都可以用于 HTTP 和 websocket。另一方面,这可能对您的情况有用。
【讨论】:
好吧,我不在乎是否会暴露第二个 HTTP 端口。但我需要问你如何做到这一点。 @Dewfy 如果您运行 Tomcat,那么复制server.xml
中的 Connector
条目可能就足够了。【参考方案2】:
ws://协议的Spring WebSocket不同端口
由于限制,并且为了在 App Engine 柔性环境中使用 websocket,应用需要使用实例的公共外部 IP 直接连接到应用实例。这个IP可以从元数据服务器获取。
所有 MVC/Rest (http://) 调用仍应从 8080 提供服务,并且在 App Engine 柔性环境 ws:// 服务器中来自 ws://external_ip:65080
工作代码
https://github.com/kevendra/springmvc-websocket-sample
http://localhost:8080/
ws://localhost:8080/
使用以下 App Engine 需要
http://localhost:8080/
ws://localhost:65080/ - in local
ws://external_ip:65080/ - App engine
参考:
扩展 org.eclipse.jetty.websocket.server.WebSocketHandler 并将服务器上下文启动到 65080,但我正在寻找由 spring 管理的服务器
How do I create an embedded WebSocket server Jetty 9? Spring 4 WebSocket Remote Broker configuration【讨论】:
嗨。我还需要在 8080 端口和 ws:// 8000 上运行所有 API。我相信你能够做到这一点,但我无法从你的代码中理解你是如何实现这一点的。你能解释一下你的实现背后的基本概念吗?以上是关于Spring 4 WebSocket 配置端口的主要内容,如果未能解决你的问题,请参考以下文章
如何使用类 + spring 4.0.0 配置 websocket 句柄
netty-websocket-spring-boot-starter不同url端口复用
Spring-websocket 配置 websocket发送消息(群发)