springboot+sockjs+stomp局域网通信问题?
用springboot搭建的服务,需要websocket通知前端
使用的是sockjs+stomp
在本机通过127.0.0.1和localhost可以建立连接
在外网通过域名可以访问
但是通过本机局域网ip192.168.1.xxx却无法建立连接
尝试过关闭防火墙也还是不行
想问下大家这种情况有没有什么解决思路
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
更新了一下问题,通过其他方式搭建的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
可以解析。如果是公司的网络 可以看一下是否使用代理了,我也碰到过,加一个websocket代理规则就可以了