Added re-auth logic

This commit is contained in:
斟酌 鵬兄 2016-02-14 22:15:38 +08:00
parent 615c112f0a
commit c7e3a80f42
2 changed files with 22 additions and 0 deletions

View File

@ -12,6 +12,7 @@ class Notis
{ {
this.__valid = false; this.__valid = false;
this.__error = null; this.__error = null;
this.Retry = 0;
try try
{ {

View File

@ -115,6 +115,7 @@ class WNSAuth extends EventEmitter
Deliver( NotisQ ) Deliver( NotisQ )
{ {
var _self = this;
Model.Tokens Model.Tokens
.findOne({ name: NotisQ.id }) .findOne({ name: NotisQ.id })
.exec( ( err, data ) => { .exec( ( err, data ) => {
@ -128,6 +129,26 @@ class WNSAuth extends EventEmitter
{ {
this.__send( data.token, NotisQ, ( sender, e ) => { this.__send( data.token, NotisQ, ( sender, e ) => {
Dragonfly.Debug( "Send: " + e.statusCode ); Dragonfly.Debug( "Send: " + e.statusCode );
if( e.statusCode != 200 )
{
AuthToken = null;
Dragonfly.Info( "Perhaps access token is expired, retrying ..." );
if( NotisQ.Retry < 2 )
{
_self.once( "AuthComplete", () => {
NotisQ.Retry ++;
_self.Deliver( NotisQ );
});
}
else
{
Dragonfly.Info( "Retrying exceeded the limit, dropping the message" );
}
_self.Authenticate();
}
} ); } );
} }
else else