Skip to content

Instantly share code, notes, and snippets.

View web-socket.service.ts
import { Injectable } from '@angular/core';
import { WebSocketSubject } from 'rxjs/webSocket';
@Injectable()
export class WebSocketService {
private _ws: WebSocketSubject<string>;
constructor() { }
View app.component.html
WebSocket client!
<button (click)="sendMessage()">Click me to send message!</button>
View app.component.ts
import { Component } from '@angular/core';
import { WebSocketService } from './services/web-socket.service';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
constructor(private _ws: WebSocketService) {
View executioner.ts
export interface Executioner{
execute(data): void;
}
View base-message.ts
import { MessageTypeEnum } from "./message-type.enum";
export interface BaseMessage<T> {
type: MessageTypeEnum;
data: T;
}
View message-type.enum.ts
export enum MessageTypeEnum {
ConsoleLog,
ConsoleError,
ConsoleTable
}
View error.service.ts
import { Injectable } from '@angular/core';
import { Executioner } from '../model/executioner';
import { ErrorUpdate } from '../model/error-update';
@Injectable({
providedIn: 'root'
})
export class ErrorService implements Executioner{
View service-resolver.ts
import { Injector } from "@angular/core";
import { MessageTypeEnum } from "../model/message-type.enum";
import { LogService } from "../services/log.service";
import { ErrorService } from "../services/error.service";
import { TableService } from "../services/table.service";
import { Executioner } from "../model/executioner";
export class ServiceResolver {
static getService(message: MessageTypeEnum, injector: Injector): Executioner {
switch(message){
View registry.service.ts
import { Injectable, Injector } from '@angular/core';
import { Executioner } from '../model/executioner';
import { ServiceLocator } from '../services/service-locator';
import { MessageTypeEnum } from '../model/message-type.enum';
@Injectable({
providedIn: 'root'
})
export class RegistryService {
private static INSTANCE: RegistryService | undefined = null;
View service-locator.ts
import { Injector } from "@angular/core";
export class ServiceLocator {
static injector: Injector;
}