improve login to rocket chat via websocket

This commit is contained in:
Peter Maquiran
2022-01-10 18:52:21 +01:00
parent cb5cbfab69
commit 053c6034a7
4 changed files with 69 additions and 45 deletions
+31
View File
@@ -30,12 +30,25 @@ export class AuthService {
public alertController: AlertController,
private aesencrypt: AESEncrypt,
private cookieService: CookieService,
private RocketChatClientService: RocketChatClientService
) {
this.headers = new HttpHeaders();
if (SessionStore.exist) {
this.ValidatedUser = SessionStore.user
this.RocketChatClientService.connect(()=>{
this.RocketChatClientService.login({
username: SessionStore.user.UserName,
password: SessionStore.user.Password
}).then((message) => {
console.log('rocket chat login successfully', message)
}).catch((message)=>{
console.log('rocket chat login failed', message)
})
})
}
if (localStorage.getItem("userChat") != null) {
@@ -77,6 +90,8 @@ export class AuthService {
session.Profile = 'MDGPR'
}
session.Password = user.password
session.BasicAuthKey = user.BasicAuthKey
SessionStore.reset(session)
@@ -98,6 +113,22 @@ export class AuthService {
"password": user.password,
}
this.RocketChatClientService.connect(()=>{
this.RocketChatClientService.login({
username: user.username,
password: user.password
}).then((message) => {
console.log('rocket chat login successfully', message)
}).catch((message)=>{
console.log('rocket chat login failed', message)
}).finally(()=>{
})
})
let responseChat = await this.httpService.post('login', postData).toPromise();
if(responseChat) {
console.log('Login to Rocket chat OK');
@@ -19,23 +19,34 @@ export class RocketChatClientService {
private returns() {}
private attemptRequestQueue(arg, option) {
private attemptRequestQueue(arg, options) {
const conditionToSend = this.ws.connected == true && this.isLogin == true
const conditionToSend = this.ws.connected == false || this.isLogin == false
if(conditionToSend) {
if(!conditionToSend) {
console.log('requestQueue')
this.requestQueue.push({
arg: arg,
methodName: options.methodName,
status: {
isLogin: this.isLogin,
isConnected: this.ws.connected
}
})
}
return conditionToSend
}
private runRequestQueue(){}
private runRequestQueue(){
this.requestQueue.forEach((request,index, object)=>{
console.log('runRequestQueue '+index)
const method = request.methodName
const arg = request.arg
this[method](...arg)
object.splice(index, 1);
})
}
connect(firstPingFunx: Function) {
this.hasPing = false
@@ -91,8 +102,8 @@ export class RocketChatClientService {
if(message.result) {
if(message.result.token) {
this.isLogin = true
this.runRequestQueue()
this.ws.wsMsgQueue()
this.runRequestQueue()
resolve(message)
} else {
this.isLogin = false
@@ -342,17 +353,14 @@ export class RocketChatClientService {
onopen:()=> {
this.ws.connected = true
console.log('================== welcome to socket server =====================')
this.ws.wsMsgQueue()
},
wsMsgQueue:()=> {
this.wsMsgQueue.forEach((item, index, object) => {
this.ws.send(item.message, item.requestId);
object.splice(index, 1);
})
},
wsMsgQueue:()=> {
// this.wsMsgQueue.forEach((item, index, object) => {
// this.ws.send(item.message, item.requestId);
// object.splice(index, 1);
// })
},
send: (message: object, requestId = uuidv4()) => {
if (this.ws.connected == false) { // save data to send when back online