跳到主要内容
版本:1.1.7

基本约定

端点/v1/ws

协议:STOMP Over Websocket

步骤

  1. 连接到/v1/ws端点,连接时要在url带上 POST /login接口返回的有效的token(参数名:__token)。
  2. 连接后,订阅所需要的主题。
  3. 在订阅回调函数中处理消息。

心跳:采用默认的心跳设置(heartbeat.outgoining = 10000, heartbeat.inbound = 10000)。

会话有效性: 当HTTP API的token失效时,Websocket的会话也同时失效。HTTP API的token失效的原因主要是超时一定的时间无API调用。 所以在WebSocket的错误事件处理中,如果断定token已经失效,则不应再重连。当POST /login接口再次成功调用时,才重新连接WebSocket。

结构:stomp客户端的消息回调处理器中,message.body的结构依主题不同而不同,见下WebSocket实时消息主题一览表。

以下以 stomp-websocket 的stomp.js(2.3.4)为例:

let stompClient;
let authToken;

function connect() {
if (!authToken)
return;

const url = 'wss://n11.gratour.info:8388/v1/ws?__token=' + authToken; // 将token添加到url上
stompClient = Stomp.Client(url);
stompClient.connect({}, (frame) => {
// 成功链接,订阅需要的主题
const dest = '/user/' + authToken + '/queue/strm';
this.stomp.subscribe(dest, (frame) => {
const notif = JSON.parse(frame.body);
// ... 处理
});

}, (error) => {
// 错误处理
});
} // function connect