stomp.js websocket广播模式
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了stomp.js websocket广播模式相关的知识,希望对你有一定的参考价值。
参考技术A 引入sockjs.js stomp.jsfunction connect()
// 建立连接对象(还未发起连接)
var socket =new SockJS("http://192.168.0.167:8081/endpointWisely");
// 获取 STOMP 子协议的客户端对象
stompClient = Stomp.over(socket);
// 向服务器发起websocket连接并发送CONNECT帧
stompClient.connect(,
function (frame)
// 连接成功时(服务器响应 CONNECTED 帧)的回调方法
console.log('已连接' + frame);
stompClient.subscribe("/topic/response",function (res)
console.log(res.body)
)
,
// 连接失败时(服务器响应 ERROR 帧)的回调方法
function errorCallBack (error)
console.log('连接失败' + error);
)
Spring websocket 和 Stomp.js - 我应该在订阅和发送之间等待多长时间?
【中文标题】Spring websocket 和 Stomp.js - 我应该在订阅和发送之间等待多长时间?【英文标题】:Spring websocket and Stomp.js - how long should i wait between subscribe and send? 【发布时间】:2014-08-30 10:38:15 【问题描述】:我有以下代码(来自 spring websocket 演示应用程序):
stompClient.connect(, function(frame)
setConnected(true);
console.log('Connected: ' + frame);
stompClient.subscribe('/user/queue/greeting', function(greeting)
displayQueueMessage(greeting);
);
function sendName()
var name = document.getElementById('name').value;
stompClient.send("/app/wsdemo", , JSON.stringify(
'name' : name
));
这是对服务器上队列的简单订阅调用,以及发送调用服务器的另一个方法“sendName()”。
调用 sendName 后,服务器响应 connect 方法提供的回调函数:
function(greeting)
displayQueueMessage(greeting);
);
我的问题是 - 客户应该从 subscribe 呼叫等待多长时间才能开始呼叫 sendName ?我的意思是,我可以在这里看到的潜在问题如下:
i) 客户端首先订阅队列,
ii) 客户端调用 sendName
iii) 服务器在收到订阅呼叫之前收到第二个呼叫。
iv) 客户端不会收到来自服务器的响应。
我的问题:
1) 这种情况真的是个问题吗?
2) 我怎样才能避免它?
3)我在某处读到,由于 websocket 与 tcp 一起使用,消息的顺序得以保持,所以我的最后一个问题是 - 对于不支持 websocket 的客户端,stompJS 的后备功能如何?订单也会维持吗?
【问题讨论】:
【参考方案1】:由于您在连接阶段订阅了队列,因此您只需等待连接建立,然后再向服务器发送请求。
【讨论】:
【参考方案2】:我想你解决了你的问题,现在知道什么是异步的承诺、回调和 javascript。
订阅时:
stompClient.subscribe('/user/queue/greeting', function(greeting)
displayQueueMessage(greeting);
);
您将回调函数作为第二个参数传递,当且仅当订阅发生(成功请求)时,您的回调才会被执行。
如果你在回调中调用sendName()
,或者使用任何其他方法来同步这两点,你可以避免它。
【讨论】:
当客户端接收到与订阅匹配的消息时执行该回调......而不是在创建订阅时。以上是关于stomp.js websocket广播模式的主要内容,如果未能解决你的问题,请参考以下文章
带有 websocket 和 stockjs 的 JBOSS eap 6.3 beta - 使用 spring 框架的 stomp.js
STOMP 上的重复事件 Socket.io 和 Node.js
Spring+Stomp+ActiveMq实现websocket长连接
Spring+Stomp+ActiveMq实现websocket长连接
jquery stomp websockets服务器重新连接重新初始化
带有 stomp js 的 Spring Boot Websocket:我不断收到哎呀!与 http://localhost:8080/ws 的连接丢失