mirror of
https://github.com/d0zingcat/gocryptotrader.git
synced 2026-05-13 23:16:45 +00:00
Adds websocket service
Adds RXJS for websocket use
This commit is contained in:
11
web/package-lock.json
generated
11
web/package-lock.json
generated
@@ -68,7 +68,7 @@
|
||||
"raw-loader": "0.5.1",
|
||||
"resolve": "1.3.3",
|
||||
"rsvp": "3.6.2",
|
||||
"rxjs": "5.4.2",
|
||||
"rxjs": "5.4.3",
|
||||
"sass-loader": "6.0.6",
|
||||
"script-loader": "0.7.0",
|
||||
"semver": "5.4.1",
|
||||
@@ -1162,8 +1162,7 @@
|
||||
"bluebird": {
|
||||
"version": "3.5.0",
|
||||
"resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.0.tgz",
|
||||
"integrity": "sha1-eRQg1/VR7qKJdFOop3ZT+WYG1nw=",
|
||||
"dev": true
|
||||
"integrity": "sha1-eRQg1/VR7qKJdFOop3ZT+WYG1nw="
|
||||
},
|
||||
"bn.js": {
|
||||
"version": "4.11.7",
|
||||
@@ -7725,9 +7724,9 @@
|
||||
}
|
||||
},
|
||||
"rxjs": {
|
||||
"version": "5.4.2",
|
||||
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.4.2.tgz",
|
||||
"integrity": "sha1-KjI2/L8D31e64G/Wly/ZnlwI/Pc=",
|
||||
"version": "5.4.3",
|
||||
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.4.3.tgz",
|
||||
"integrity": "sha512-fSNi+y+P9ss+EZuV0GcIIqPUK07DEaMRUtLJvdcvMyFjc9dizuDjere+A4V7JrLGnm9iCc+nagV/4QdMTkqC4A==",
|
||||
"requires": {
|
||||
"symbol-observable": "1.0.4"
|
||||
}
|
||||
|
||||
@@ -48,7 +48,7 @@
|
||||
"@angular/router": "4.3.0",
|
||||
"core-js": "2.4.1",
|
||||
"enhanced-resolve": "3.3.0",
|
||||
"rxjs": "5.4.2",
|
||||
"rxjs": "^5.4.3",
|
||||
"zone.js": "0.8.12"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
||||
@@ -14,16 +14,20 @@ import { HomeComponent } from './pages/home/home.component';
|
||||
import { AboutComponent } from './pages/about/about.component';
|
||||
|
||||
import { AppRoutingModule } from './app-routing.module';
|
||||
import { WebsocketService } from './services/websocket/websocket.service';
|
||||
|
||||
import { ElectronService } from './providers/electron.service';
|
||||
import { NavbarComponent } from './shared/navbar/navbar.component';
|
||||
import * as Rx from 'rxjs/Rx';
|
||||
import {Injectable} from '@angular/core';
|
||||
|
||||
@NgModule({
|
||||
declarations: [
|
||||
AppComponent,
|
||||
HomeComponent,
|
||||
AboutComponent,
|
||||
NavbarComponent
|
||||
NavbarComponent,
|
||||
WebsocketService
|
||||
],
|
||||
imports: [
|
||||
BrowserModule,
|
||||
|
||||
15
web/src/app/services/websocket/websocket.service.spec.ts
Normal file
15
web/src/app/services/websocket/websocket.service.spec.ts
Normal file
@@ -0,0 +1,15 @@
|
||||
import { TestBed, inject } from '@angular/core/testing';
|
||||
|
||||
import { WebsocketService } from './websocket.service';
|
||||
|
||||
describe('WebsocketService', () => {
|
||||
beforeEach(() => {
|
||||
TestBed.configureTestingModule({
|
||||
providers: [WebsocketService]
|
||||
});
|
||||
});
|
||||
|
||||
it('should be created', inject([WebsocketService], (service: WebsocketService) => {
|
||||
expect(service).toBeTruthy();
|
||||
}));
|
||||
});
|
||||
39
web/src/app/services/websocket/websocket.service.ts
Normal file
39
web/src/app/services/websocket/websocket.service.ts
Normal file
@@ -0,0 +1,39 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import * as Rx from 'rxjs/Rx';
|
||||
|
||||
@Injectable()
|
||||
export class WebsocketService {
|
||||
private socket: Rx.Subject<MessageEvent>;
|
||||
|
||||
public connect(url): Rx.Subject<MessageEvent> {
|
||||
if(!this.socket) {
|
||||
this.socket = this.create(url);
|
||||
}
|
||||
|
||||
return this.socket;
|
||||
}
|
||||
|
||||
private create(url): Rx.Subject<MessageEvent> {
|
||||
let ws = new WebSocket(url);
|
||||
|
||||
let observable = Rx.Observable.create(
|
||||
(obs: Rx.Observer<MessageEvent>) => {
|
||||
ws.onmessage = obs.next.bind(obs);
|
||||
ws.onerror = obs.error.bind(obs);
|
||||
ws.onclose = obs.complete.bind(obs);
|
||||
|
||||
return ws.close.bind(ws);
|
||||
}
|
||||
);
|
||||
|
||||
let observer = {
|
||||
next: (data: Object) => {
|
||||
if (ws.readyState === WebSocket.OPEN) {
|
||||
ws.send(JSON.stringify(data));
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
return Rx.Subject.create(observer, observable);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user