
服务端: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 reistry) { registry.addHandler(ncdWebSocketHandler(), "/websocket") .setAllowedOrigins("*"); } @Bean public WebSocketHandler ncdWebSocketHandler() { return new NcdWebSocketHandler(); } } public class NcdWebSocketHandler extends TextWebSocketHandler { }
1 MENGKE 2024 年 2 月 23 日 看下电脑和路由器的防火墙。 |
2 vagusss 2024 年 2 月 23 日 估计是服务端的防火墙问题,直接关闭试试 |
3 Lockeysama 2024 年 2 月 23 日 确认下开启 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 2024 年 2 月 23 日 @laaaaaa 这就不太清楚了,实在不行就用其它语言写个最简单的 Demo 试试看,先确定下是系统环境问题还是框架使用的问题 |
7 fiveStarLaoliang 2024 年 2 月 23 日 用内网的其他机器 telnet 试下端口是否连接 |
8 bubble21 2024 年 2 月 23 日 能 ping 通对方 ip 吗?看情况不是代码问题 |
9 laaaaaa OP @fiveStarLaoliang @bubble21 我这个项目里有一些业务接口, 局域网内的另一个 IP ,通过我的内网 ip 访问我的业务接口 都是正常的,就 websocket 连接不上... |
10 Hf1G1sGBYS8QSLN8 2024 年 2 月 23 日 服务器端收到请求了么?连接失败客户端报的什么错误? |
11 linshuizhaoying 2024 年 2 月 23 日 关掉翻墙软件 |
12 fiveStarLaoliang 2024 年 2 月 23 日 你的业务接口的端口和 websocket 不是一个端口吧,ws 会通过 http 建立连接,然后才升级到 websocket ,有可能 http 的端口是通的,websocket 的端口不通 |
13 xyooyx 2024 年 2 月 23 日 你用 chrome 做的调试吗,chrome 之类浏览器对 websocket 有安全域名限制,127.0.0.1 和 localhost 属安全域名,你试下上哥 tsl 证书,也就是 wss 估计就可以了 |
14 Kevinyy 2024 年 2 月 23 日 via iPhone 问题应该在前端,确认前端访问的协议。 |
15 cyhulk 2024 年 2 月 23 日 建议 wiresharp 抓下 tcp 包,你这样,spring 的 websocket 我记得是 sockjs 的吧,你用 wiresharp 抓 tcp 是最优排查方案,看下 http 有没有建立连接,有没有 update |
16 zjbwill 2024 年 2 月 23 日 你工具是自己写的还是网上的现成的,网上的话看下是不是 https 开头的,换个 http 开头的 |
17 keller 2024 年 2 月 23 日 https://www.easyswoole.com/wstool.html 用这个工具测试一下 |
18 IvanLi127 2024 年 2 月 24 日 直接复用同一个服务起 http ,看看 http 能连通不,能通的话只少能证明你的服务大概有正常监听。 |