用springboot搭建的服务,需要websocket通知前端
使用的是sockjs+stomp
在本机通过127.0.0.1和localhost可以建立连接
在外网通过域名可以访问
但是通过本机局域网ip192.168.1.xxx却无法建立连接
尝试过关闭防火墙也还是不行
想问下大家这种情况有没有什么解决思路
用springboot搭建的服务,需要websocket通知前端
使用的是sockjs+stomp
在本机通过127.0.0.1和localhost可以建立连接
在外网通过域名可以访问
但是通过本机局域网ip192.168.1.xxx却无法建立连接
尝试过关闭防火墙也还是不行
想问下大家这种情况有没有什么解决思路
4 回答1.5k 阅读✓ 已解决
1 回答2.6k 阅读✓ 已解决
2 回答1.9k 阅读✓ 已解决
3 回答1.9k 阅读
1 回答1k 阅读✓ 已解决
1 回答797 阅读✓ 已解决
2 回答696 阅读✓ 已解决
更新了一下问题,通过其他方式搭建的websocket没有问题。
再次测试SockJS仅保留websocket模式,由于一直遇到
所以尝试将timeout设置为一个特别大的数字,如下
发现可以建立连接了,就是打开过程很慢(固定30s),通过定位后端代码,发现慢在
AbstractHandshakeHandler
类的doHandshake
方法中进一步定位在
AbstractStandardUpgradeStrategy
类中upgrade
方法的request.getLocalAddress()
会调用InetAddress
类的getHostName()
,最终调用getHostFromNameService
。这里面会用ip去解析hostname,环境中解析不到所以解析超时。
在家里面的内网就能立刻建立连接,在
/etc/resolv.conf
中第一行是search xx
,通过nslookup 192.168.xxx.xxx
可以解析。