我一直在努力为我的项目实施Socket.io-client-java。
但是我有几个问题:
如果用户未获得授权,我可以断开与服务器端的socket
连接。在这种情况下,我可以处理客户端套接字onDisconnect
事件的情况。
如果用户未获得授权,我可以返回Not authorized
之类的错误。然后我可以处理客户端套接字onError
事件的情况。
问题:哪一个是正确的做法?
如果我发出API请求,我会检查响应的HTTP status code
,以确认我必须获得新的Access Token
并且必须再次发送相同的请求。
问题:在使用socket
时,如何知道是否需要获取新的访问令牌?
我也可以通过检查HTTP status code
来了解服务器内部错误。然后我甚至可以检查响应正文中的错误代码和消息。
问题:使用socket
时如何管理错误?
我有点困惑。
部分答案或完整答案都会很棒!
ps:对不起,如果我的问题有关套接字逻辑的错误。
答案 0 :(得分:0)
我在写我的解决方案:
问题:哪一个是正确的方法?
回答:他们两个!
因此,如果未授权套接字连接,请使用服务器端的以下步骤:
socket.io
middleware返回错误:next(new Error("ERR_TOKEN"))
setTimeout(function(){socket.disconnect()}, 200)
问题:在使用套接字时,如何知道是否需要获取新的访问令牌?
回答:检查客户端的错误消息。
我创建了几个用于服务器端和客户端的常量错误代码。 (ERR_NO_AUTH_HEADER
,ERR_AUTH_HEADER_VALUE
,ERR_TOKEN
)
在客户端onError
事件:
我使用socket.disconnect();
的代码断开套接字。否则,我无法使用新的访问令牌发送新请求。实际上服务器将断开连接。然而,我也在客户端断开连接以确保。
我检查错误代码。如果代码为ERR_TOKEN
,我会从Android中的AccountManager获取新令牌。 AccountManager获取新的authtoken
并将其存储到自己的缓存中以供将来使用。
问题:如何在使用套接字时管理错误?
回答:我就像之前的回答一样解决了这个问题。
希望这有助于其他人......