2016-07-27 8 views
0

私はSocket.io-client-javaを自分のプロジェクトに実装しようとしています。ユーザーが許可されていないクライアントサイドの承認応答やエラーのようなソケット応答処理

場合、私は、サーバー側からのsocketの接続を切断することができます

は、しかし、私はいくつかの質問を持っています。この場合、私はクライアントソケットonDisconnectイベントの状況を処理できます。

ユーザーが承認されていない場合は、Not authorizedのようなエラーを返すことができます。次に、クライアントソケットonErrorイベントの状況を処理できます。

質問:どちらが正しいアプローチですか?

APIリクエストを行う場合は、HTTP status codeの返信を確認して、新しいAccess Tokenを取得して同じリクエストを再度送信する必要があることに気付きます。

質問:socketを使用するときに新しいアクセストークンを取得する必要があるかどうかを確認するにはどうすればよいですか?

また、HTTP status codeをチェックすると、サーバーの内部エラーが発生したことがわかります。それから私は、応答本体からエラーコードとメッセージをチェックすることさえできます。

質問:socketを使用しているときにエラーを管理するにはどうすればよいですか?

私はちょっと混乱しました。

部分回答または完全回答の両方が優れています。

ps:申し訳ありませんが、私の質問にはソケットロジックに関するミスがあります。

答えて

0

私は自分のソリューションを書いている:

質問: 1は正しいアプローチですか?
答え:両方とも!
next(new Error("ERR_TOKEN"))

  • 外しクライアント:私は次のコードを使用してsocket.io middlewareてエラーを返す

    1. :ソケット接続が許可されていない場合

      だから、私は、サーバー側で以下の手順を使用します次のコードを使用して、システム・リソースとセキュリティを考慮してソケット:
      setTimeout(function(){socket.disconnect()}, 200)

    質問:ソケットを使用する際に新しいアクセストークンを取得する必要があるかどうかを知るにはどうすればよいですか?
    回答:クライアント側のエラーメッセージを確認してください。

    サーバー側とクライアント側の両方で使用されるいくつかの定数エラーコードを作成しました。 (ERR_NO_AUTH_HEADERERR_AUTH_HEADER_VALUEERR_TOKEN

    クライアント側のonErrorイベントで:

    1. 私はsocket.disconnect();のコードを使用してソケットを切断します。さもなければ私は新しいアクセストークンで新しい要求を送ることができません。実際にはサーバーは接続を切断します。それにもかかわらず、私は確実にクライアント側で切断します。

    2. エラーコードを確認します。コードがERR_TOKENの場合は、AndroidのAccountManagerから新しいトークンを取得します。 AccountManagerは新しいauthtokenを取得し、将来の使用のために独自のキャッシュに格納します。

    質問:ソケットを使用しているときがどのようにエラーを管理できますか?
    答え:私は前の答えと同じように解決します。

    これが他の人に役立つことを願って...