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.__error = null;
this.Retry = 0;
try
{

View File

@ -115,6 +115,7 @@ class WNSAuth extends EventEmitter
Deliver( NotisQ )
{
var _self = this;
Model.Tokens
.findOne({ name: NotisQ.id })
.exec( ( err, data ) => {
@ -128,6 +129,26 @@ class WNSAuth extends EventEmitter
{
this.__send( data.token, NotisQ, ( sender, e ) => {
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