客户端Socket响应处理,如授权和错误情况

时间:2016-07-27 08:00:08

标签: java android sockets socket.io

我一直在努力为我的项目实施Socket.io-client-java

但是我有几个问题:

如果用户未获得授权,我可以断开与服务器端的socket连接。在这种情况下,我可以处理客户端套接字onDisconnect事件的情况。

如果用户未获得授权,我可以返回Not authorized之类的错误。然后我可以处理客户端套接字onError事件的情况。

问题:哪一个是正确的做法?

如果我发出API请求,我会检查响应的HTTP status code,以确认我必须获得新的Access Token并且必须再次发送相同的请求。

问题:在使用socket时,如何知道是否需要获取新的访问令牌?

我也可以通过检查HTTP status code来了解服务器内部错误。然后我甚至可以检查响应正文中的错误代码和消息。

问题:使用socket时如何管理错误?

我有点困惑。

部分答案或完整答案都会很棒!

ps:对不起,如果我的问题有关套接字逻辑的错误。

1 个答案:

答案 0 :(得分:0)

我在写我的解决方案:

问题:哪一个是正确的方法?
回答:他们两个!

因此,如果未授权套接字连接,请使用服务器端的以下步骤:

  1. 我使用以下代码通过socket.io middleware返回错误:
    next(new Error("ERR_TOKEN"))
  2. 使用以下代码考虑系统资源和安全性,断开客户端套接字:
    setTimeout(function(){socket.disconnect()}, 200)
  3. 问题:在使用套接字时,如何知道是否需要获取新的访问令牌?
    回答:检查客户端的错误消息。

    我创建了几个用于服务器端和客户端的常量错误代码。 (ERR_NO_AUTH_HEADERERR_AUTH_HEADER_VALUEERR_TOKEN

    在客户端onError事件:

    1. 我使用socket.disconnect();的代码断开套接字。否则,我无法使用新的访问令牌发送新请求。实际上服务器将断开连接。然而,我也在客户端断开连接以确保。

    2. 我检查错误代码。如果代码为ERR_TOKEN,我会从Android中的AccountManager获取新令牌。 AccountManager获取新的authtoken并将其存储到自己的缓存中以供将来使用。

    3. 问题:如何在使用套接字时管理错误?
      回答:我就像之前的回答一样解决了这个问题。

      希望这有助于其他人......