【问题标题】:Spring 4 WebSocket configure portSpring 4 WebSocket 配置端口
【发布时间】: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 - 刚刚更新

标签: spring-mvc websocket


【解决方案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 管理的服务器

【讨论】:

  • 嗨。我还需要在 8080 端口和 ws:// 8000 上运行所有 API。我相信你能够做到这一点,但我无法从你的代码中理解你是如何实现这一点的。你能解释一下你的实现背后的基本概念吗?
猜你喜欢
  • 2014-01-11
  • 1970-01-01
  • 2020-07-06
  • 1970-01-01
  • 2021-06-14
  • 2016-07-21
  • 2018-05-06
  • 2013-10-11
  • 1970-01-01
相关资源
最近更新 更多