STOMP Over WebSocket(滑稽的翻译成跺脚吧)

STOMP是一个简单的文本定位通讯协议。它定义了一个可互操作的线格式所以,任何可用的跺STOMP的客户可以与任何消息代理提供方便和广泛的消息互 语言和平台之间的沟通(STOMP网站有一个STOMP客户端和服务器端的实现列表


WebSockets“TCP网络”。

当谷歌宣布推出WebSocket谷歌浏览器这背后的想法,解释WebSockets:

WebSocket API允许Web应用程序以简单的方式与服务器端处理双向通信。开发人员已经使用XMLHttpRequest(“辽”)等目的,但是XHR使Web应用程序的开发,沟通 往返于服务器的不必要的复杂。XHR基本异步HTTP,因为你需要使用一个棘手的技术像长挂让数据从服务器到浏览器,简单的任务迅速变得复杂。相对于 XMLHttpRequest,WebSockets提供真正的双向通信信道在浏览器。一旦你得到一个WebSocket连接,你可以把数据从浏览器到服务器通过调用一个send()方法和接收数据从服务器到浏览器的消息 事件处理程序。

除了新的WebSocket API,还有一个新的协议(“WebSocket协议”),浏览器使用与服务器通信。该协议是TCP因为需要提供浏览器的“同源”的安全模型。这也是 不是HTTP因为WebSocket流量differers从HTTP的请求响应模型。WebSocket通信使用新的WebSocket协议应该使用更少的带宽,与一系列的xhrs挂得到,无头交换一次单 连接已经建立。使用这个新的API和协议,利用简单的编程模型和更有效的网络流量,你需要一个新的服务器实现沟通。

API的一部分HTML5并支持(在不同的程度…)大多数现代浏览器(包括谷歌浏览器,Mac OS X和iOS Firefox和Safari)。

协议支持

这个库支持践踏协议的多个版本:

STOMP1

STOMP1.1

服务器的要求

这个库是不是一个<em>纯</em>STOMP客户端。它的目的是使用WebSocket协议是TCP。基本上,WebSocket协议需要<em>握手</em>之间的浏览器的客户端和服务器以确保浏览器的“同源”的安全模型仍然有效。

这意味着,这个库连接不经常践踏经纪人因为他们不会明白通过WebSocket不是STOMP协议发起握手会拒绝连接。

有正在进行的工程添加WebSocket支持STOMP经纪人让他们接受践踏在WebSocket协议连接。

hornetq

hornetq由红帽和JBoss的开源邮件系统开发。

开始hornetq与践踏过的WebSocket支持,下载最新版本运行以下步骤:

  美元CD hornetq-x.y.z/examples/jms/stomp-websockets
  美元MVN清洁安装
  …
信息:hq221020:开始3.6.2.final-c0d783c网状受主版本地:61614 stomp_ws协议
 2013年4月15日1:15:33点org。hornetq。核心。服务器实现。hornetqserverimpl sharedstoreliveactivation美元运行
信息:hq221007:服务器是现在生活
 2013年4月15日下午1:15:33 org.hornetq.core.server.impl.hornetqserverimpl开始
信息:hq221001:hornetq服务器版本2.3.0.cr2(black'n'yellow2,123)[ c9e29e45-a5bd-11e2-976a-b3fef7ceb5df ]

hornetq现在开始听踩在港口WebSocket六万一千六百一十四
它接受WebSocket连接从URLWS:/ /本地:61614 /STOMP

配置和运行hornetq与践踏过的WebSocket启用,跟随用法说明

ActiveMQ

ActiveMQ是由Apache开源邮件系统。从5.4开始的快照,ActiveMQ支持WebSocket踩过。

配置和运行ActiveMQ与践踏在WebSocket启用,跟随用法说明

ActiveMQ阿波罗

ActiveMQ阿波罗是ActiveMQ经纪人的下一代。从一开始,阿波罗支持WebSocket踩过。

配置和运行阿波罗与践踏过的WebSocket启用,跟随指令

RabbitMQ

RabbitMQ开源邮件系统由VMware。

配置和运行RabbitMQ与践踏在WebSocket启用,遵循安装说明Web踩插件

高跷和torquebox

高跷是一种践踏本地通信框架,旨在解决处理践踏作为通讯主合同,将在它的周围,而不是简单地应用现有的 STOMP垫片 服务。

torquebox采用高跷项目提供WebSockets和践踏堆栈

stomp.js JavaScript文件下载

你可以下载stomp.js使用它在您的Web应用程序

缩小版还提供了用于生产。

这个JavaScript文件生成CoffeeScript文件看到贡献部分源代码下载或浏览注释的源代码

STOMP的API

单帧

踩过WebSocket提供了一个简单的映射从一个单帧一个JavaScript对象。

框架对象
财产类型笔记
命令字符串框架的名称(“连接”“发送”,等)
标题JavaScript对象 
身体字符串 

这个命令标题属性将始终被定义但标题可以为空,如果帧没有头。这个身体可以是无效的如果帧没有体。

创建一个践踏客户

在一个普通的Web Socket网络浏览器

STOMPJavaScript客户端将使用单服务器通信WS:/ /URL。

创建一个践踏客户端JavaScript对象,你需要调用STOMP客户端(URL)。对应于服务器的WebSocket的端点URL:

var url =“WS:/ /本地:61614 /STOMP”;
 VAR客户=STOMP。客户端(URL;

这个STOMP客户端(URL,协议)。还可用来覆盖默认的子协议提供的库:[ 'v10。STOMPSTOMP]”“V11。(1和1.1规格为STOMP)。这第二个参数可以是一个字符串或字符串数组指定多个子协议。

在Web浏览器中使用自定义的WebSocket

Web浏览器支持WebSocket协议的不同版本。一些老的浏览器不提供WebSocket JavaScript或暴露在一个名字。默认情况下,stomp.js可以使用Web浏览器原生WebSocket类创建WebSocket。

然而,它可以使用其他类型的WebSockets利用踩过(WS)。方法。该方法将对象符合WebSocket的定义。

例如,可以使用提供的实施sockjs项目落在各种浏览器特定的传输协议来替代:

<脚本src=“http:/ /的CDN。sockjs。org / sockjs-0.3。js“> < /脚本> 
 <脚本> 
 /而不是浏览器的本地实现
 VAR WS =新sockjs使用sockjs实施(URL);
 VAR客户=STOMP。在
 [(WS);
 </…]

使用STOMP客户端(URL)。用普通的WebSockets或使用踩过(WS)。如果你需要另一种类型的WebSocket。

除此之外,初始化,STOMP API是相同的在这两种情况下。

在Node.js应用

图书馆还可以用于Node.js应用程序通过使用stompjs NPM包

  美元安装stompjs NPM

在Node.js应用程序,需要的模块:

VaR  STOMP=需要('stompjs”);

在连接到一个践踏经纪人套接字,使用STOMP。overtcp(主机、端口)方法

VAR客户=STOMP。overtcp('localhost ',61613);

在连接到一个践踏经纪人网络插座相反,使用踩overws(URL)。方法

VAR客户=STOMP。overws('ws:/ /本地:61614 /重”);

除此之外,初始化,STOMP API是相同的无论是在Web浏览器中运行的应用程序或Node.js。

连接到服务器

一旦践踏客户创建时,它必须调用它的connect()为了有效地连接和验证到STOMP服务器的方法。这个方法有两个强制性参数,登录密码对应于用户的凭据。

在现场,客户端将使用WebSocket打开一个连接,并发送一个连接

连接是异步的:你有没有保证是有效连接的时候调用连接退货被通知的连接,你需要通过一个connect_callback函数的connect()方法

无功connect_callback = function() { 
 /叫回来后,客户端连接和服务器认证的STOMP
 };

但如果连接失败会发生什么?这个connect()方法接受一个可选的error_callback争论将如果客户端无法连接到服务器。回调将调用带有一个参数的,一个错误对象相应的STOMP误差

无功error_callback =函数(误差){ 
 /显示错误的消息标题:
警报(错误。标题。消息);

这个connect()方法接受不同数目的参数,提供简单的API的使用在大多数情况下:

客户端连接(登录名,密码,connectcallback);
客户端连接(登录,密码,connectcallback,errorCallback);
客户端连接(登录,密码,connectcallback errorCallback,;

哪里登录密码是字符串connectcallbackerrorCallback功能(一些经纪人也需要通过主办字符串)。

这个connect()方法还可以接受其他两变种,如果你需要通过额外的头:

客户端连接(头、connectcallback);
客户端连接(头、connectcallback,errorCallback;

哪里是一张地图,connectcallbackerrorCallback函数。

请注意,如果你使用这些形式,你必须添加登录密码(最终主办标题自己):

VaR的标题= { 
登录:“mylogin ',
密码:“mypasscode ',
 /附加报头
的客户端ID”:“我的客户ID 
 };
客户端连接(标题;

从服务器断开连接的客户端,你可以调用它的disconnect()方法断开是异步的:要断开时是有效的通知,断开方法接受一个可选的回调争论。

;
;

当客户端断开时,它不再能够发送或接收消息。

心脏的跳动

如果跺STOMP经纪人接受1.1帧,心脏的跳动默认情况下启用。

这个客户对象有一个心跳字段可用于配置心跳改变进来的外向的整数字段(为默认值一万MS):

client.heartbeat.outgoing = 20000;//客户端会发送心跳每20000ms 
 client.heartbeat.incoming = 0;//客户端不想从服务器收到的心跳
 / /

心脏的跳动是使用setinterval()窗口。定期发送心跳和/或检查服务器的心跳。

发送消息

当客户端连接到服务器,可以发送邮件使用的STOMPsend()方法该方法以强制目的地去踩地对应的参数。有两个可选参数:标题,一个JavaScript对象包含额外的信息头和身体,一个字符串对象。

客户端发送(“/队列/测试”,{ 9 },优先:“你好,践踏”);

客户端将发送一个践踏发送框架/队列/测试一头的目的地优先设置和一个身体你好,STOMP

如果你想用身体发出一个信息,你必须同时通过标题争论。如果你没有头通,使用一个空的javascript文本{ }

客户端发送(目的地,{ },身体);

订阅和接收消息

在浏览器中接收消息,STOMP客户端必须先订阅一个目的地。

你可以使用subscribe()方法来订阅一个目的地。该方法以2强制参数:目的地一个字符串对应,到目的地回调一、功能消息参数和一个可选择的论点标题额外的标题,一个JavaScript对象。

var =客户认购。认购(“/队列/测试”,回调);

这个subscribe()方法返回一个JavaScript对象与属性1,身份证件,对应于客户端订阅ID和一个方法unsubscribe()可后来退订的客户从这个目的地。

默认情况下,图书馆就在标题没有生成一个唯一的ID。用你自己的身份,通过使用标题争论:

无功mysubid = '…';
 var =客户认购。认购(目的,回调,{编号:mysubid };

客户端将发送一个践踏订阅帧服务器登记回调。每次服务器发送一个消息给客户端,客户端将调用回调相应的消息一STOMP框架对象:

回调=功能(消息){ 
 /称当客户端从服务器接收到一个消息如果
STOMP(消息体){ 
警报(“消息体”+消息体)
 }人{ 
警报(“有空消息”);} } 
 
;

这个subscribe()方法接受一个可选的标题参数指定额外的头当订阅到目的地:

VaR的标题= {确认:'客户','选择':“位置=“欧洲”};
客户端订阅(“/队列/测试”,message_callback,头;

客户指定要处理的消息确认,有兴趣接收消息匹配选择器定位为“欧洲”

如果你想订阅客户到多个目的地,你可以使用相同的回调收到的所有邮件:

消息=功能(消息){ 
 /称每次客户端接收到一个消息
 } 
 VAR SUB1 =客户订阅(队列/测试”,消息);
 VAR SUB2 =客户订阅(队列/另一个”,消息;

停止接收短信,客户可以使用unsubscribe()返回的对象上的方法subscribe()方法

var =客户认购。认购(…);
 
 
 
订阅;

JSON支持

STOMP消息主体必须是字符串。如果你想发送和接收JSON对象,您可以使用stringify() JSON。parse() JSON。将JSON对象转换为字符串,反之亦然。

无功报价= {符号:'应用',价值:195.46 };
客户端发送(“/主题/股”,{ },JSON。stringify(引用));
 
客户订购(“/主题/股”功能(消息){ var报价= 
 JSON解析(。消息体);
警报(quote.symbol +“”+报价;

确认

默认情况下,STOMP消息将自动被服务器之前的消息发送到客户端。

客户可以选择处理消息确认通过订阅一个目的地,指定ACK标题设置客户客户的个人

在这种情况下,客户端必须使用ack()消息。通知服务器,它已经确认消息的方法。

var =客户认购。认购(“/队列/测试”,
功能(消息){ 
 /做某事的消息
…
 /并承认它
消息。ack();
 },
 {应答:“客户”};

这个ack()方法接受标题额外的标头来论证确认消息。例如,它是可能的应答消息作为交易的一部分,索要发票时ACKSTOMP框架已经有效地被经纪人处理:

VaR Tx =客户。begin();
 ACK消息。({交易:tx.id,收据:我收到
”});

这个nack()方法也可以用来通知跺1.1经纪人,客户不使用消息。它以相同的参数比ack()方法

交易

邮件可以发送和承认<em>在交易</em>。

一个事务开始由客户端使用begin()方法以可选交易一个字符串,它唯一地标识,交易。如果没有交易通过,图书馆将生成一个自动。

这个方法返回一个JavaScript对象与身份证件属性对应的交易ID和两种方法:

  • commit()提交事务
  • abort()中止交易
客户端可以发送和/或承认的交易信息通过指定 交易设置与交易 身份证件
//开始交易
 VAR Tx =客户。begin();
 /发送的消息在一个交易
客户端发送(“/队列/测试”,tx.id },{交易”的消息在一个交易”);
 /提交事务有效地发送消息
;

如果你忘了加交易头时调用send()该消息将是交易的一部分,将直接发送无需等待交易的完成。

VaR TXID =“unique_transaction_identifier”;
 /开始交易
 VAR Tx =客户。begin();
 /!;
 TX abort();/ /太!消息已发送

调试

代码中有几个测试有助于看到的是发送和接收从库中调试应用程序。

客户端可以设置其调试属性函数与需要字符串观点看所有的调试库报表:

client.debug =功能(STR){ 
 /附加调试日志到#调试div在网页上使用jQuery:
 $(“#调试”)。追加(STR +“\n”);

默认情况下,调试信息记录在浏览器窗口的控制台。

例子

源代码包含一个聊天的例子例子/聊天/ index.html

你需要支持WebSocket开始STOMP服务器(例如使用hornetq)。

点击连接按钮连接到服务器和订阅的/队列/测试/队列。

然后你可以输入信息的形式在页面底部的消息队列发送STOMP。客户端接收到的信息将显示在页面的顶部。

你也可以把经常践踏消息和看到他们在浏览器中显示。例如直接使用TelnetSTOMP默认端口:

  美元telnet localhost 61613
  连接
登录:客人
密码:客人
 
 ^ @
  连接
会议:1092296064

^ @是一个空(控制- @在ASCII)字节。

  
 ^

你现在应该在你的浏览器收到这条讯息。

贡献


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Vue 3中使用stomp-websocket,你可以按照以下步骤进行操作: 1. 首先,你需要安装stompjs和sockjs-client依赖。在你的Vue项目根目录下,打开终端并运行以下命令: ```shell npm install stompjs sockjs-client --save ``` 2. 在你需要使用stomp-websocket的组件中,引入stompjs和sockjs-client库。你可以在Vue组件的`<script>`标签中添加以下代码: ```javascript import { Stomp } from 'stompjs'; import SockJS from 'sockjs-client'; ``` 3. 接下来,你可以在组件的方法中创建和管理stomp客户端连接。例如,在`created`钩子函数中,可以添加以下代码: ```javascript created() { const socket = new SockJS('http://localhost:8080/your-websocket-endpoint'); // 替换为你的WebSocket端点URL this.stompClient = Stomp.over(socket); this.stompClient.connect({}, this.onConnect, this.onError); }, methods: { onConnect() { // 连接成功后的处理逻辑 }, onError(error) { // 连接失败后的处理逻辑 } } ``` 4. 在`onConnect`方法中,你可以订阅并接收消息。例如: ```javascript onConnect() { this.stompClient.subscribe('/your-destination', (message) => { // 处理收到的消息 console.log(message.body); }); } ``` 这里的`/your-destination`是你想要订阅的目标地址。 5. 最后,当你不再需要连接时,记得在适当的时候断开连接: ```javascript beforeDestroy() { this.stompClient.disconnect(); } ``` 这样,你就可以在Vue 3中使用stomp-websocket了。请注意,上述代码中的URL和订阅目标地址需要根据你的实际情况进行修改。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值