在集成GoEasy websocket消息推送的过程中常见的错误与解决方案。
GoEasy连接失败
-
code:401,error:Please upgrade the GoEasy SDK version to 2.6 +, the newly created GoEasy application cannot support your current SDK version, or contact the GoEasy team
错误原因:sdk版本太低。GoEasy在2.6版本中做了大的升级,所有新的应用都需要集成高于2.6+
解决方案: 从官网下载最新的sdk SDK下载链接,然后根据官网文档对相应的weboscket消息推送的接口进行升级更新操作。 -
code:400,error:appkey is invalid
错误原因: 调用connect接口时传入的appkey不正确, 或者host不正确
解决方案: 登录GoEasy控制台,查看应用详情 ,获取相应的common key、Subscribe Key 或者 Client Key+OTP ,在调用connect接口时传入正确的key即可。 具体每种appkey的用法,请参考文档 https://docs.goeasy.io/2.x/common/account/developer-account
如果appkey经过排查后无误,那么需要排查connect接口的host是否跟GoEasy所在的服务节点一致。 在创建GoEasy应用时,需要选择服务节,如果选择的是杭州节点,host应该是 hangzhou.goeasy.io; 如果是新加坡节点,那么host应该是 singapore.goeasy.io -
code:900,error:Over max user capacity
错误原因: 超过目前套餐最大支持的日活
解决方案: 使用已经成功建立过连接的设备继续使用GoEasy。如果需要支持更多的日活(设备),可以登录GoEasy后台进入应用详情页面,补差价将套餐升级到更高一档套餐即可。完成升级后,5分钟内生效。套餐资费可以在这里查看基础型套餐, https://www.goeasy.io/cn/pricing.html#pubsub -
code:408,error:It is already connected, don’t try again until disconnect() is called.
错误原因: 尝试在一个客户端中建立多个GoEasy连接。目前一个客户端有且只能创建一个GoEasy连接。GoEasy有断网自动重连机制,所以不需要开发者单独处理断网或者弱网情况下的连接。
解决方案: 可以在调用connect接口前加上一个条件判断,当当前连接状态为disconnected时才调用connect接口。
if (GoEasy.getConnectionStatus() === 'disconnected') {
//建立连接
GoEasy.connect({
onSuccess: function () { //连接成功
console.log("GoEasy connect successfully.") //连接成功
},
onFailed: function (error) { //连接失败
console.log("Failed to connect GoEasy, code:"+error.code+ ",error:"+error.content);
},
onProgress:function(attempts) { //连接或自动重连中
console.log("GoEasy is connecting", attempts);
}
});
}
-
[wxapplib]] Uncaught (in promise) FrameworkError {“errMsg”:“closeSocket:fail:taskID not exist”}
或者
[Vue warn]: Errorin event handler for"api.onSocketTaskstatechange":“SyntaxError: JSON Parse error: Unable to parseJSON string”
错误原因: 排查是否存在GoEasy websocket连接之外的其它websocket连接,如果有,那么是多个websocket冲突导致的。
解决方案: 用SocketTask的方式创建其它的websocket连接,来避免跟goeasy的websocket连接造成冲突。 参考链接:https://uniapp.dcloud.io/api/request/socket-task -
wss://5hangzhou.goeasy.io 不在以下 socket 合法域名列表中
错误原因: 没有配置正确的socket合法域名。
解决方案: 小程序下,必须要配置socket 合法域名。登录微信公众平台->微信小程序开发设置->服务器域名, 添加对应的socket合法域名。
不同sdk版本,socket合法域名有所不同,请根据您的sdk版本配置对应的socket合法域名。
SDK 版本 | socket合法域名 |
---|---|
SDK <= 2.8.8 | wss://wx-hangzhou.goeasy.io |
2.9.1 <= SDK <=2.10.13 | wss://1mp-hangzhou.goeasy.io wss://2mp-hangzhou.goeasy.io |
SDK >= 2.10.14 | wss://1hangzhou.goeasy.io wss://2hangzhou.goeasy.io wss://3hangzhou.goeasy.io wss://4hangzhou.goeasy.io wss://5hangzhou.goeasy.io |
-
code:401,error:Unauthorized
错误原因: connect接口的otp不正确。
解决方案: 首先排查connect接口中的client key是否正确,如果没有问题,需要排查传入的otp是否正确。 需要注意:otp 只能被使用一次,而且生成后第一次使用需要在5分钟之内完成。 OTP的生成与使用,参考文档:https://docs.goeasy.io/2.x/common/otp/howto -
一直报GoEasy is connecting,连接不上
可能的错误原因 | 解决方案 |
---|---|
如果是小程序,可能是socket合法域名不正确 | 根据SDK版本配置对应的socket合法域名,参考上文中的socket合法域名配置详情 |
网络不稳定 | 切换为移动数据测试,或者晚点再试 |
如果是iOS的自定义基座,push模块没有勾选或者跟unipush模块共用冲突导致连接不上 | 在manifest.json中勾选push模块,取消勾选unipush相关模块,再重新打自定义基座测试 |
其它 | 访问www.goeasy.io官网咨询在线客服 |
- code:999,error:Your GoEasy application is expired, please contact your administrator to renew it
错误原因: 当前所用的套餐已经到期。
解决方案: 登录GoEasy后台,为当前应用完成续费即可。
消息接收不到
针对websocket消息推送收不到的问题,原因有以下可能:
- GoEasy连接未成功建立
- 客户端执行subscribe接口失败
- subscribe接口中的channel跟publish接口中的channel不一致
- 消息没有成功发送,也就是执行publish接口失败
消息发送失败
针对websocket消息推送,前端调用publish接口发送失败,原因有以下可能:
- GoEasy连接未成功建立
- 参数传入错误
- 套餐内没有可用消息