ws配置 zuul_zuul+websocket+sockjs
需要实现前端页面->zuul网关->消息服务,建立websocket连接
使用spring-cloud-netflix-zuul-websocket 实现zuul网关层对websocket的转发;
注意事项:
1.前端使用sockjs,注意地址前缀
// 不要使用ws前缀!!,如果使用websocket(url),为ws前缀
var socket = new SockJS('http://datamgt-services.respool.wmcloud-qa.com/notify-websocket')
注:如果使用ws前缀会报如下异常:
sockjs.min.js:27 Failed to load ws://xx/info: Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https.
2.后端注意开启跨域和指定sockjs协议:
@Override
public void registerStompEndpoints(StompEndpointRegistry stompEndpointRegistry) {
//注册一个名字为"notify-websocket" 的endpoint,并指定 SockJS协议。 点对点-用
stompEndpointRegistry
.addEndpoint("/notify-websocket")
.setAllowedOrigins("*")
.withSockJS();
}
3.zuul层配置:
zuul:
routes:
service-notify:
path: /service-notify/**
service-id: service-notify
url: http://xxxx
customSensitiveHeaders: true
ws:
brokerages:
service-notify:
end-points: /notify-websocket
brokers: /topic
destination-prefixes: /send
注意:
前端访问时不要再加服务名称:
正确: new SockJS('http://zuul地址/notify-websocket')
错误: new SockJS('http://zuul地址/服务名称/notify-websocket') 会报404
配置文件必须指定zuul.routes.服务名称.url,否则报错
如果要动态指定服务的实际url怎么办,重写获取url的方法
/**
* 重写获取服务url的方法:原有方法读取配置的路由url,改为通过服务读取
* @param zuulProperties
* @return
*/
@Bean
public ZuulPropertiesResolver zuulPropertiesResolver(
final ZuulProperties zuulProperties) {
return new ZuulPropertiesResolver() {
@Override
public String getRouteHost(ZuulWebSocketProperties.WsBrokerage wsBrokerage) {
// 默认方法去读配置文件url属性
//return zuulProperties.getRoutes().get(wsBrokerage.getId()).getUrl();
//自己改写,可以通过注册中心读取服务地址、或者数据库等方式
return "http://xxx";
}
};
}
参考:
ws配置 zuul_zuul+websocket+sockjs相关推荐
- WebSocket+SockJs+STMOP
应用场景 WebSocket 1 编写Handler类 2 拦截器的实现 3 WebSocketConfig配置 4 客户端配置 5 Bad Code 6 nginx配置 SockJs 1 WebSo ...
- 基于spring websocket+sockjs实现的长连接请求
1.前言 页面端通常有需求想要准实时知道后台数据的一个变化情况,比如扫码登录场景,或者跳转到网银支付场景,在旧有的短轮训实现下,通常造成大量的不必要请求和查询,这里基于spring websocket ...
- 用nginx反向代理功能将WS转为加密websocket (wss)
原来写的服务器端程序支持websocket非加密协议,即仅支持 ws://ip/file 形式的访问,现在网站的主协议变成了https了,再通过ws://协议来访问原服务器,浏览器阻止了.查找原因就是 ...
- JSON.stringify( new WebSocket(ws://localhost:8080/websocket.do))
//存在session//先是 test 后是 wsvar test = {test: '', test1: 1,fun:function () {console.info("函数可以吗&q ...
- 若依(ruoyi/ruoyi-vue)集成websocket以及ws配置匿名访问
文章目录 若依集成websocket实现实时通信 1.`ruoyi-framework/pom.xml`文件添加`websocket`依赖. 2.配置匿名访问 - shiro安全框架 - spring ...
- Sping WebSocket SockJS使用
2019独角兽企业重金招聘Python工程师标准>>> 注意点: 1.Spring Framework从4.0版本开始支持websocket,示例代码使用的是4.1.3 2.Sock ...
- apache 配置 wss websocket打开握手超时_「Web应用架构」WebSocket介绍和WebSocket API
WebSocket支持在客户端和服务器之间双向的.面向消息的文本和二进制数据流.它是浏览器中最接近原始网络套接字的API.除了WebSocket连接也不仅仅是一个网络套接字,因为浏览器在一个简单的AP ...
- springboot+websocket+sockjs进行消息推送【基于STOMP协议】
1.浅谈WebSocket WebSocket是在HTML5基础上单个TCP连接上进行全双工通讯的协议,只要浏览器和服务器进行一次握手,就可以建立一条快速通道,两者就可以实现数据互传了.说白了,就是打 ...
- ws配置 zuul_SpringCloud系列研究---服务网关zuul
一.zuul简介 服务网关是微服务架构中的入口,微服务平台通过服务网关统一向外部暴露API供客户端调用,网关除了具备服务路由.均衡负载功能之外,它还具备了权限控制等功能.在Spring Cloud中的 ...
最新文章
- 计算机网络应用PS,计算机一级Photoshop应用试题及答案
- java网格画线_java 网格输出的类--练习 stream
- ubuntu中以root权限打开文件(夹)
- 声明式事务控制的实现
- MacosX 下GCC编译指定版本的代码
- php在线考试系统模板下载,PHPEMS在线模拟考试系统 v6.1
- 法语写信_为我们写信:我们最热门的19个主题
- 使用Libxml2解析xml[转]
- python常用的库与包_python常用到哪些库?
- java 日志时间格式_java.util.logging.Logger 使用中关于时间格式的问题
- 下列统计量服从什么分布_第六章 数理统计基本概念
- 【CAD】机械类制图实用功能总结
- 什么是BSIC及其在GSM系统中的应用
- 微信公众平台之模拟登录
- 智能健身动作识别:PP-TinyPose打造AI虚拟健身教练!
- 【C++代码】约瑟夫环问题:0,1,……,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字。求出这个圆圈里剩下的最后一个数字。
- 浅谈RabbitMQ的基石—高级消息队列协议(AMQP)
- java.sql.SQLException: The server time zone value '???ú±ê×??±??' is unrecognized or represents 解决方法
- 7.3 Python 一维数据的格式化和处理
- 实现商品分类和品牌管理功能