stomp插件

RabbitMQ stomp插件

websocket

理解 :基于服务

和客户端的双向连接
市面上类似有大概三种方式,由于http协议是惰性协议,不会主动接受服务端请求
1)基于短连接:每隔几秒钟客户端发送一次请求

2) 基于长连接:发送一次请求,后端线程等待响应

上诉两种协议都会大量占用服务器资源

3)(重点)基于websocket协议: websocket协议是双向协议,耗费服务器资源较少

//web前端使用
var socket="ws://localhost:8080/test";
//创建websocket对象
let websocket = new WebSocket(socket)

// 监听open事件,在成功建立websocket时向url发送纯文本字符串数据(如果是对象则必须序列化处理)。
websocket.onopen = () => {
  if (websocket.readyState === WebSocket.OPEN) {
    websocket.send('hello world')
  }
}

// 监听message事件,在服务器响应时接受数据。返回的数据存储在事件对象中。
websocket.onmessage = e => {
  let data = e.data
  console.log(data)
}

// 监听error事件,在发生错误时触发,连接不能持续。
websocket.onerror = () => {
  console.log('websocket connecting error!!')
}

// 监听close事件,在连接关闭时触发。只有close事件的事件对象拥有额外的信息。可以通过这些信息来查看关闭状态
websocket.onclose = e => {
  let clean = e.wasClean // 是否已经关闭
  let code = e.code // 服务器返回的数值状态码。
  let reason = e.reason //服务器返回的消息。
}

rebbitmq webstomp

webstomp概念:基于stomp协议(前身websocket协议)插件

docker ps -a
//查看所有容器

docker exec -it id bin/bash
//进入该容器

rabbitmq-plugin enable rabbitmq_web_stomp 
rabbitmq_web_stomp_example
//开启rabbit  web_mqstomp插件

nothing to do 表示已经开启,什么也没做

exit //退出当前容器

docker conmit id rabbit:stomp
//重新创建镜像

docker stop oldid
//停掉之前的容器

docker run -id --name=name -p 5671:5617 -p 5673:5672 -p 4369:4369 -p 15671:15671 -p 25672:25672 -p 15670:15670 -p 15674 rabbitmq:stomp
//启动容器 以及端口映射
 
 
 docker start id
 //启动新的容器,该容器使用了webstomp插件

回到浏览器访问rebbitmq页面 访问15672端口

下面是前端连接webstomp

let client=	Stomp.client("ws://127.0.0.1:8080/ws");
let on_connect=function(x){
	id=client.subscibe("/exchange/交换机名称",function(d){
	//回调执行
	alert(d.body);
	})
};
let on_error=function(){
	console.log('error')
};
client.connet('guest','guest',on_connet,on_error,'/')
//guest分别表示rebbit账号密码,/表示路径

访问该html页面,f12会看到控制台ping pang

回到rabbitmq发送消息,前端就接收到信息.
最后请创建一个只读权限的rebbitmq用户,防止恶意更改消息队列

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
07-22 680

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值