简介

STOMP即Simple (or Streaming) Text Orientated Messaging Protocol,简单(流)文本定向消息协议,它提供了一个可互操作的连接格式,允许STOMP客户端与任意STOMP消息代理(Broker)进行交互。STOMP协议由于设计简单,易于开发客户端,因此在多种语言和多种平台上得到广泛地应用。

安装使用:

1,在项目中通过 

npm i stompjs 

下载stompjs包 

2,在需要使用stomp进行通信的vue页面中引入 

import Stomp from 'stompjs'

 

连接和订阅

  1. 确定连接的url 改url由后端给予,大致长:‘ws://xxx.xxx.com:8080/xxx/xxx’ 后面可能还会带有要传的内容,如token等,请自行拼接该字符串
  2. 通过该url进行连接,这一步将会使浏览器和服务器之间产生ws连接
    stompjs提供了以下方法进行连接:
 // 连接
 // 三个参数分别是header,连接成功的回调,失败的回调
 // header中的内容如果后端没有强调,可以直接为 {}
 client.connect(headers, connectCallback, errorCallback)
 // 订阅 两个参数分别是 主题 回调 返回一个订阅对象 包含了 订阅id 取消订阅的方法 unsubscribe
 client.subscribe("/queue/test", callback)
 // 实例
 let client = null
 let subscription = null
 let url = 'xxx.xxx.xxx:xxx/xxx/xxx?xxx=xxx'
 function initWs(){
	client = Stomp.client(url) // 创建stomp对象
	client.connect(
		{}, 
		(res)=>{ // 连接成功,此时可以在network中看到建立了ws连接
			// 在这里进行订阅 主题由后端提供
			const topic = '/xxxx/xxxx/xxxx
			subscription = client.subscribe(topic,(resp)=>{ // 这里的resp是stomp返回的message
				// ...
			})
		}, 
		(err)=>{ // 连接失败
			console.log(err)
		})
 }
 function stopSubscribe(){ // 取消订阅
	subscription.unsubscribe()
 }
 function closeConnect(){ // 关闭stomp连接
	client.disconnect()
 }
 

 

心跳

目前npm i stompjs 中的stomp.js设置了默认的心跳,默认值为10秒发一次

client.heartbeat.outgoing = 20000 // 20秒发一次
client.heartbeat.incoming = 0 // 客户端不接受心跳

stomp中实现定时器用的是 window.setInterval当在没有window对象的环境中使用时,会报错,比如微信小程序…此时需要对stomp.js文件进行修改,参看stomp.js中 Stomp.setInterval = function(){...} 部分,为stomp.setinterval和clearinterval赋值一个当前环境中可以使用的定时器即可

发送信息

client.send()

GitHub 加速计划 / vu / vue
207.54 K
33.66 K
下载
vuejs/vue: 是一个用于构建用户界面的 JavaScript 框架,具有简洁的语法和丰富的组件库,可以用于开发单页面应用程序和多页面应用程序。
最近提交(Master分支:2 个月前 )
73486cb5 * chore: fix link broken Signed-off-by: snoppy <michaleli@foxmail.com> * Update packages/template-compiler/README.md [skip ci] --------- Signed-off-by: snoppy <michaleli@foxmail.com> Co-authored-by: Eduardo San Martin Morote <posva@users.noreply.github.com> 4 个月前
e428d891 Updated Browser Compatibility reference. The previous currently returns HTTP 404. 5 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐