服务端:springboot websocket ( spring-boot-starter-websocket 包) JDK8
客户端:vue 原生 websocket
现在我服务端已经搭建好 websocket 服务了,然后我通过测试工具测试,但是只能用本地地址连接;
ws://127.0.0.1:7000/websocket/{sid} 是可以正常的
ws://192.168.0.10:7000/websocket/{sid} 内网地址是不能连接
在网上看了很多,试了一下都不行,请教一下大佬们,如果一个局域网内 内网 Ip 如何建立链接,并联调呀~
```
端点
@Slf4j
@Component
@ServerEndpoint("/websocket/{sid}")
public class SerialWebSocket {
public void onOpen();
public void onClose();
....
}
配置
@Configuration
public class WebSocketConfiguration {
@Bean
public ServerEndpointExporter serverEndpointExporter() {
return new ServerEndpointExporter();
}
}
```
```
@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {
@Override
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
registry.addHandler(ncdWebSocketHandler(), "/websocket")
.setAllowedOrigins("*");
}
@Bean
public WebSocketHandler ncdWebSocketHandler() {
return new NcdWebSocketHandler();
}
} public class NcdWebSocketHandler extends TextWebSocketHandler { }
1
MENGKE 311 天前
看下电脑和路由器的防火墙。
|
2
vagusss 311 天前
估计是服务端的防火墙问题,直接关闭试试
|
3
Lockeysama 311 天前
确认下开启 Web 服务的地址是 127.0.0.1 还是 0.0.0.0 这种,有些框架如果地址是 127.0.0.1 的,其它 IP 会访问不了
|
5
laaaaaa OP @Lockeysama 从启动来看好像是 127.0.0.1 但是我在项目的配置文件 设置 server.address=0.0.0.0 还是不能用内网 ip 访问
|
6
Lockeysama 311 天前
@laaaaaa 这就不太清楚了,实在不行就用其它语言写个最简单的 Demo 试试看,先确定下是系统环境问题还是框架使用的问题
|
7
fiveStarLaoliang 311 天前
用内网的其他机器 telnet 试下端口是否连接
|
8
bubble21 311 天前
能 ping 通对方 ip 吗?看情况不是代码问题
|
9
laaaaaa OP @fiveStarLaoliang
@bubble21 我这个项目里有一些业务接口, 局域网内的另一个 IP ,通过我的内网 ip 访问我的业务接口 都是正常的,就 websocket 连接不上... |
10
Hf1G1sGBYS8QSLN8 311 天前
服务器端收到请求了么?连接失败客户端报的什么错误?
|
11
linshuizhaoying 311 天前
关掉翻墙软件
|
12
fiveStarLaoliang 311 天前
你的业务接口的端口和 websocket 不是一个端口吧,ws 会通过 http 建立连接,然后才升级到 websocket ,有可能 http 的端口是通的,websocket 的端口不通
|
13
lqw3030 311 天前 1
你用 chrome 做的调试吗,chrome 之类浏览器对 websocket 有安全域名限制,127.0.0.1 和 localhost 属安全域名,你试下上哥 tsl 证书,也就是 wss 估计就可以了
|
14
Kevinyy 311 天前 via iPhone
问题应该在前端,确认前端访问的协议。
|
15
cyhulk 311 天前
建议 wiresharp 抓下 tcp 包,你这样,spring 的 websocket 我记得是 sockjs 的吧,你用 wiresharp 抓 tcp 是最优排查方案,看下 http 有没有建立连接,有没有 update
|
16
zjbwill 311 天前
你工具是自己写的还是网上的现成的,网上的话看下是不是 https 开头的,换个 http 开头的
|
17
keller 311 天前
https://www.easyswoole.com/wstool.html 用这个工具测试一下
|
18
IvanLi127 310 天前
直接复用同一个服务起 http ,看看 http 能连通不,能通的话只少能证明你的服务大概有正常监听。
|