基本约定
端点: /v1/ws
协议:STOMP Over Websocket
步骤:
- 连接到
/v1/ws
端点,连接时要在url带上POST /login
接口返回的有效的token(参数名:__token
)。 - 连接后,订阅所需要的主题。
- 在订阅回调函数中处理消息。
心跳:采用默认的心跳设置(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:7011/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