在 Java EE 中使用特定 IP 发送 WebSocket 请求
Posted
技术标签:
【中文标题】在 Java EE 中使用特定 IP 发送 WebSocket 请求【英文标题】:Send WebSocket request using specific IP in Java EE 【发布时间】:2015-12-19 14:50:11 【问题描述】:我使用 Tyrus 进行连接。代码如下:
public void connect(String IP)
WebSocketContainer webSocketContainer = ContainerProvider.getWebSocketContainer();
ClientEndpointConfig.Configurator configurator = new ClientEndpointConfig.Configurator()
public void beforeRequest(Map<String, List<String>> headers)
List<String> originValue = new ArrayList<>();
originValue.add("http://example.com");
headers.put("Origin", originValue);
;
ClientEndpointConfig clientConfig = ClientEndpointConfig.Builder.create()
.configurator(configurator)
.build();
try
webSocketContainer.connectToServer(this, clientConfig, new URI(IP));
catch (Exception e)
...
我的电脑有几个 IP 地址。我想从选定的 IP 发送 WebSocket 请求 - 我想将 WebSocket 绑定到特定的本地 IP。有可能吗?我应该使用其他库吗?
编辑:我找到了netty - 它允许手动设置本地 IP 地址。
【问题讨论】:
【参考方案1】:我相信操作系统会根据本地接口的路由表选择本地地址。
如果您有多个 IP 都可以到达目标主机,我建议您通过要绑定的本地 ip 配置到该主机的(静态)路由。
【讨论】:
默认情况下,请求总是由一个 IP 发送。我想自己设置IP。这可能吗? 正如我所说 - 只有当有从该地址到服务器的路由时。 我认为 - 还有另一种解决方案 - ***.com/questions/30875927/… - 但可能 Tyrus 不支持设置本地 IP 地址,我将不得不切换到另一个库...【参考方案2】:我使用代理而不是为请求选择 IP。
【讨论】:
以上是关于在 Java EE 中使用特定 IP 发送 WebSocket 请求的主要内容,如果未能解决你的问题,请参考以下文章