This commit is contained in:
crusader
2018-03-12 16:37:42 +09:00
parent 18c59571bd
commit eff89ec032
8 changed files with 38 additions and 6 deletions

View File

@@ -5,6 +5,8 @@ import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { HttpClientModule } from '@angular/common/http';
import { CookieService } from 'ngx-cookie-service';
import { RPCClient } from 'packages/core/rpc/client/RPCClient';
import { RPCClientCodec } from 'packages/core/rpc/protocol/RPCClientCodec';
import { RPCClientJSONCodec } from 'packages/core/rpc/protocol/json/RPCClientJSONCodec';
@@ -56,6 +58,7 @@ import { RESTService } from './commons/service/rest.service';
{
provide: RPCClient, useClass: RPCService
},
CookieService,
],
declarations: [
AppComponent,

View File

@@ -14,6 +14,8 @@ import 'rxjs/add/operator/switchMap';
import 'rxjs/add/operator/map';
import 'rxjs/add/operator/take';
import { CookieService } from 'ngx-cookie-service';
import { RPCClient } from 'packages/core/rpc/client/RPCClient';
import {
@@ -29,6 +31,7 @@ export class Effects {
constructor(
private actions$: Actions,
private rpcClient: RPCClient,
private cookieService: CookieService,
) { }
@Effect({ dispatch: false })
@@ -36,7 +39,11 @@ export class Effects {
.ofType(ActionType.SigninSuccess)
.do(
() => {
this.rpcClient.connect();
let queryString: string;
if (this.cookieService.check('AuthToken')) {
queryString = `AuthToken=${this.cookieService.get('AuthToken')}`;
}
this.rpcClient.connect(queryString);
}
);

View File

@@ -27,8 +27,8 @@ export class RPCClient {
/**
* connect
*/
public connect(): void {
this._rwc.connect();
public connect(queryString?: string): void {
this._rwc.connect(queryString);
this._rwc.readResponse().subscribe(
(value: Object) => {
this.onMessage(value);

View File

@@ -3,7 +3,7 @@ import { InjectionToken } from '@angular/core';
import { Observable } from 'rxjs/Observable';
export abstract class RPCClientRWC {
public abstract connect(): void;
public abstract connect(queryString?: string): void;
public abstract readResponse(): Observable<Object>;
public abstract writeRequest(data: any): void;
public abstract disconnect(): void;

View File

@@ -20,7 +20,10 @@ export class RPCClientWebsocketRWC extends RPCClientRWC {
this._wsSocketSubject = new RxWebsocketSubject<Object>(this._config);
}
public connect(): void {
public connect(queryString?: string): void {
if (undefined !== queryString) {
this._wsSocketSubject.queryString = queryString;
}
this._wsSocketSubject.connect();
this._wsSocketSubject.subscribe(
(value: Object) => {

View File

@@ -24,6 +24,7 @@ export class RxWebsocketSubject<T> extends Subject<T> {
private _socket: WebSocketSubject<any>;
private _connectionObserver: Observer<boolean>;
private _connectionStatus: Observable<boolean>;
private _queryString: string;
public constructor(private _config: RxWebsocketSubjectConfig) {
super();
@@ -55,12 +56,25 @@ export class RxWebsocketSubject<T> extends Subject<T> {
});
}
public set queryString(query: string) {
this._queryString = query;
}
public get queryString(): string | undefined {
return this._queryString;
}
public get connectionStatus(): Observable<boolean> {
return this._connectionStatus;
}
public connect(): void {
this._socket = new WebSocketSubject(this._wsSubjectConfig);
const wsSubjectConfig = Object.assign({}, this._wsSubjectConfig);
if (undefined !== this._queryString) {
wsSubjectConfig.url = wsSubjectConfig.url + '?' + this._queryString;
}
this._socket = new WebSocketSubject(wsSubjectConfig);
this._socket.subscribe(
(m) => {
this.next(m);