跳到主要内容

消息自动补发 - Websocket消息推送(Pubsub)

GoEasy websocket消息自动补发,分为断网补发和离线补发两种情况:

  • 断网补发:断网指用户在正常使用期间(浏览器没有关闭或刷新,小程序或APP进程没有销毁),因网络不稳定(路由器故障、进入电梯或地下停车场)导致与GoEasy的连接断开。断网后,GoEasy将自动持续尝试重连,一旦网络恢复,GoEasy将自动补发断网期间的消息,称为断网补发。
  • 离线补发:离线指用户退出应用(浏览器关闭或刷新,小程序或APP的进程被销毁)。 当用户再次进入应用成功订阅同一个channel,GoEasy可自动补发用户离线期间的消息,称为离线补发。

设置消息自动补发

发送每条消息时,增加名为qos的参数,qos设为1:网络恢复后,该消息将自动补发,qos设为0则无需补发,不指定qos参数时,默认为0,该消息无需补发。

2023年3月1日之前创建的GoEasy应用,所有消息的qos默认值为1,默认自动补发,老用户除了可以发送消息时通过增加参数指定qos值,也可以在线联系GoEasy工作人员修改应用qos默认值。


goEasy.pubsub.publish({
channel: "test_channel",
message: {text:'Hello, GoEasy!'},
qos: 1, // 为1启用补发,0无需补发,默认为0。SDK需升级至2.6.2以上
onSuccess:function(){
console.log("消息发布成功。");
},
onFailed: function (error) {
console.log("消息发送失败,错误编码:"+error.code+" 错误信息:"+error.content);
}
}

启用用户离线补发

要启用用户离线消息自动补发,除了发送消息时指定qos=1,还需要在调用connect建立连接时,设置用户id,否则GoEasy不能识别用户身份, 无法进行离线消息补发, 若只需要断网补发,无需指定用户id.

用户建立连接时指定用户id,发送的消息qos为1,当用户离线再重新进入应用channel订阅成功后,系统将自动补发离线期间的所有消息。


goeasy.connect({
id: "用户唯一标识,如 user-001", //要启用离线补发,必须指定用户id
onSuccess: function () {
console.log("GoEasy connect successfully.")
},
onFailed: function (error) {
console.log("Failed to connect GoEasy, code:" + error.code + ",error:" + error.content);
}
});