mirror of
https://github.com/kuhyx/ARAI.git
synced 2026-07-04 12:03:16 +02:00
feat: changed websocket liobrary
This commit is contained in:
parent
9e78430d5b
commit
8463e15dae
@ -35,10 +35,9 @@
|
|||||||
],
|
],
|
||||||
"scripts": [],
|
"scripts": [],
|
||||||
"server": "src/main.server.ts",
|
"server": "src/main.server.ts",
|
||||||
"prerender": true,
|
"prerender": false,
|
||||||
"ssr": {
|
"ssr": false
|
||||||
"entry": "server.ts"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"configurations": {
|
"configurations": {
|
||||||
"production": {
|
"production": {
|
||||||
|
|||||||
@ -16,6 +16,7 @@
|
|||||||
"@angular/common": "^17.0.0",
|
"@angular/common": "^17.0.0",
|
||||||
"@angular/compiler": "^17.0.0",
|
"@angular/compiler": "^17.0.0",
|
||||||
"@angular/core": "^17.0.0",
|
"@angular/core": "^17.0.0",
|
||||||
|
"@angular/flex-layout": "15.0.0-beta.42",
|
||||||
"@angular/forms": "^17.0.0",
|
"@angular/forms": "^17.0.0",
|
||||||
"@angular/material": "^17.2.2",
|
"@angular/material": "^17.2.2",
|
||||||
"@angular/platform-browser": "^17.0.0",
|
"@angular/platform-browser": "^17.0.0",
|
||||||
@ -24,6 +25,7 @@
|
|||||||
"@angular/router": "^17.0.0",
|
"@angular/router": "^17.0.0",
|
||||||
"@angular/ssr": "^17.0.3",
|
"@angular/ssr": "^17.0.3",
|
||||||
"express": "^4.18.2",
|
"express": "^4.18.2",
|
||||||
|
"json-server": "1.0.0-alpha.23",
|
||||||
"rxjs": "~7.8.0",
|
"rxjs": "~7.8.0",
|
||||||
"socket.io-client": "^4.7.4",
|
"socket.io-client": "^4.7.4",
|
||||||
"tslib": "^2.3.0",
|
"tslib": "^2.3.0",
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@ -1,11 +1,12 @@
|
|||||||
import { Component } from '@angular/core';
|
import { Component } from '@angular/core';
|
||||||
import { CommonModule } from '@angular/common';
|
|
||||||
import { RouterOutlet } from '@angular/router';
|
import { RouterOutlet } from '@angular/router';
|
||||||
|
import { CaseInputComponent } from './case-input/case-input.component';
|
||||||
|
import { FlexLayoutModule } from '@angular/flex-layout';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-root',
|
selector: 'app-root',
|
||||||
standalone: true,
|
standalone: true,
|
||||||
imports: [CommonModule, RouterOutlet],
|
imports: [RouterOutlet, CaseInputComponent, FlexLayoutModule],
|
||||||
templateUrl: './app.component.html',
|
templateUrl: './app.component.html',
|
||||||
styleUrl: './app.component.scss'
|
styleUrl: './app.component.scss'
|
||||||
})
|
})
|
||||||
|
|||||||
@ -1,12 +1,11 @@
|
|||||||
import { EventEmitter, Injectable } from '@angular/core';
|
import { EventEmitter, Injectable } from '@angular/core';
|
||||||
import { io, Socket } from 'socket.io-client';
|
import { GenericRequest, GenericResponse, RecommendedMediatorsResponse, StatisticsOutputResponse, UserInputRequest, userInput } from './requests-responses';
|
||||||
import { GenericRequest, GenericResponse, RecommendedMediatorsResponse, StatisticsOutputResponse, UserInput, UserInputRequest } from './requests-responses';
|
|
||||||
|
|
||||||
@Injectable({
|
@Injectable({
|
||||||
providedIn: 'root'
|
providedIn: 'root'
|
||||||
})
|
})
|
||||||
export class BackendService {
|
export class BackendService {
|
||||||
address = "localhost:1227";
|
address = "localhost:8080";
|
||||||
|
|
||||||
public genericResponsesArray: GenericResponse[] = [];
|
public genericResponsesArray: GenericResponse[] = [];
|
||||||
public userInputArray: UserInputRequest[] = [];
|
public userInputArray: UserInputRequest[] = [];
|
||||||
@ -16,7 +15,7 @@ export class BackendService {
|
|||||||
public statisticsOutputResponseArrayEvent = new EventEmitter<StatisticsOutputResponse>();
|
public statisticsOutputResponseArrayEvent = new EventEmitter<StatisticsOutputResponse>();
|
||||||
|
|
||||||
|
|
||||||
private socket: Socket = io(`http://${this.address}`);
|
private websocket: WebSocket | null = null;
|
||||||
|
|
||||||
constructor() {
|
constructor() {
|
||||||
this.connect();
|
this.connect();
|
||||||
@ -35,20 +34,19 @@ export class BackendService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private connect(): void {
|
private connect(): void {
|
||||||
this.socket = io(`http://${this.address}`);
|
this.websocket = new WebSocket(`http://${this.address}`);
|
||||||
this.socket.on('connect', () => {
|
this.websocket.onmessage = (event: MessageEvent) => {
|
||||||
console.log('Connected to WebSocket server');
|
this.filterMessages(event as unknown as GenericResponse);
|
||||||
});
|
};
|
||||||
|
|
||||||
// Listen for messages
|
// Listen for messages
|
||||||
this.socket.on('message', (message: GenericResponse) => {
|
this.websocket.on('message', (message: GenericResponse) => {
|
||||||
this.filterMessages(message);
|
this.filterMessages(message);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public sendMessage(message: GenericRequest): void {
|
public sendMessage(message: GenericRequest): void {
|
||||||
if(message.request_type === "user_input") {
|
if(message.request_type === "user_input") {
|
||||||
this.userInputArray.push(message as UserInput);
|
this.userInputArray.push(message as UserInputRequest);
|
||||||
}
|
}
|
||||||
this.socket.emit('message', message);
|
this.socket.emit('message', message);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1 +1,24 @@
|
|||||||
<p>case-input works!</p>
|
<form [formGroup]="userInputForm" (ngSubmit)="onSubmit()" fxLayout="column" fxLayoutGap="20px" fxLayoutAlign="start">
|
||||||
|
<mat-form-field appearance="fill" fxFlex>
|
||||||
|
<mat-label>Generic Input</mat-label>
|
||||||
|
<input matInput formControlName="generic_input">
|
||||||
|
</mat-form-field>
|
||||||
|
|
||||||
|
<mat-form-field appearance="fill" fxFlex>
|
||||||
|
<mat-label>Trial Value</mat-label>
|
||||||
|
<input matInput type="number" formControlName="trial_value">
|
||||||
|
</mat-form-field>
|
||||||
|
|
||||||
|
<mat-form-field appearance="fill" fxFlex>
|
||||||
|
<mat-label>Location</mat-label>
|
||||||
|
<input matInput formControlName="location">
|
||||||
|
</mat-form-field>
|
||||||
|
|
||||||
|
<div fxFlex fxLayout="column" fxLayoutGap="10px">
|
||||||
|
<mat-checkbox formControlName="experts_called">Experts Called</mat-checkbox>
|
||||||
|
<mat-checkbox formControlName="witnesses_called">Witnesses Called</mat-checkbox>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<button mat-raised-button type="submit" (click)="onSubmit()" fxFlexAlign="end">Submit</button>
|
||||||
|
</form>
|
||||||
|
|
||||||
@ -1,8 +1,11 @@
|
|||||||
import { Component } from '@angular/core';
|
import { Component } from '@angular/core';
|
||||||
import { ReactiveFormsModule } from '@angular/forms';
|
import { FormBuilder, FormGroup, ReactiveFormsModule } from '@angular/forms';
|
||||||
import { MatInputModule } from '@angular/material/input'
|
import { MatInputModule } from '@angular/material/input'
|
||||||
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
|
|
||||||
import { MatCheckboxModule } from '@angular/material/checkbox'
|
import { MatCheckboxModule } from '@angular/material/checkbox'
|
||||||
|
import { CommonModule } from '@angular/common';
|
||||||
|
import { MatButtonModule } from '@angular/material/button'
|
||||||
|
import { BackendService } from '../backend.service';
|
||||||
|
import { UserInputRequest, userInput } from '../requests-responses';
|
||||||
|
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
@ -10,14 +13,35 @@ import { MatCheckboxModule } from '@angular/material/checkbox'
|
|||||||
standalone: true,
|
standalone: true,
|
||||||
imports: [
|
imports: [
|
||||||
// other modules
|
// other modules
|
||||||
|
CommonModule,
|
||||||
MatInputModule,
|
MatInputModule,
|
||||||
MatCheckboxModule,
|
MatCheckboxModule,
|
||||||
ReactiveFormsModule,
|
ReactiveFormsModule,
|
||||||
BrowserAnimationsModule,
|
MatButtonModule
|
||||||
],
|
],
|
||||||
templateUrl: './case-input.component.html',
|
templateUrl: './case-input.component.html',
|
||||||
styleUrl: './case-input.component.scss'
|
styleUrl: './case-input.component.scss'
|
||||||
})
|
})
|
||||||
export class CaseInputComponent {
|
export class CaseInputComponent {
|
||||||
|
userInputForm: FormGroup;
|
||||||
|
userInput: userInput | null = null;
|
||||||
|
|
||||||
|
constructor(private fb: FormBuilder, private readonly backendService: BackendService) {
|
||||||
|
this.userInputForm = this.fb.group({
|
||||||
|
generic_input: [''],
|
||||||
|
trial_value: [0],
|
||||||
|
location: [''],
|
||||||
|
experts_called: [false],
|
||||||
|
witnesses_called: [false]
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
onSubmit(): void {
|
||||||
|
if(this.userInput !== null) {
|
||||||
|
this.backendService.sendMessage(new UserInputRequest(this.userInput));
|
||||||
|
} else {
|
||||||
|
console.error(`caseInputComponent, onSubmit, userInput is null!`)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
16
simple-ws/package.json
Normal file
16
simple-ws/package.json
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
{
|
||||||
|
"name": "simple-ws",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"description": "",
|
||||||
|
"main": "ws.js",
|
||||||
|
"scripts": {
|
||||||
|
"test": "echo \"Error: no test specified\" && exit 1",
|
||||||
|
"start": "node server.js"
|
||||||
|
},
|
||||||
|
"keywords": [],
|
||||||
|
"author": "",
|
||||||
|
"license": "ISC",
|
||||||
|
"dependencies": {
|
||||||
|
"ws": "^8.16.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
25
simple-ws/pnpm-lock.yaml
Normal file
25
simple-ws/pnpm-lock.yaml
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
lockfileVersion: '6.0'
|
||||||
|
|
||||||
|
settings:
|
||||||
|
autoInstallPeers: true
|
||||||
|
excludeLinksFromLockfile: false
|
||||||
|
|
||||||
|
dependencies:
|
||||||
|
ws:
|
||||||
|
specifier: ^8.16.0
|
||||||
|
version: 8.16.0
|
||||||
|
|
||||||
|
packages:
|
||||||
|
|
||||||
|
/ws@8.16.0:
|
||||||
|
resolution: {integrity: sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==}
|
||||||
|
engines: {node: '>=10.0.0'}
|
||||||
|
peerDependencies:
|
||||||
|
bufferutil: ^4.0.1
|
||||||
|
utf-8-validate: '>=5.0.2'
|
||||||
|
peerDependenciesMeta:
|
||||||
|
bufferutil:
|
||||||
|
optional: true
|
||||||
|
utf-8-validate:
|
||||||
|
optional: true
|
||||||
|
dev: false
|
||||||
24
simple-ws/ws.js
Normal file
24
simple-ws/ws.js
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
const WebSocket = require('ws');
|
||||||
|
const WebSocketServer = WebSocket.WebSocketServer;
|
||||||
|
|
||||||
|
// Initialize a WebSocket Server on port 8080
|
||||||
|
const wss = new WebSocketServer({ port: 8080 });
|
||||||
|
|
||||||
|
wss.on('connection', function connection(ws) {
|
||||||
|
console.log('A new client connected');
|
||||||
|
|
||||||
|
// Send a message to the client
|
||||||
|
ws.send('Welcome to the WebSocket server!');
|
||||||
|
|
||||||
|
// Listen for messages from the client
|
||||||
|
ws.on('message', function message(data) {
|
||||||
|
console.log(`Received message from client: ${data}`);
|
||||||
|
});
|
||||||
|
|
||||||
|
// Handle client disconnection
|
||||||
|
ws.on('close', () => {
|
||||||
|
console.log('A client disconnected');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
console.log('WebSocket server is running on ws://localhost:8080');
|
||||||
Loading…
Reference in New Issue
Block a user