From 72368475ca8ef46f9aca90122aa8fa792424b720 Mon Sep 17 00:00:00 2001 From: NyxiumYuuki Date: Fri, 28 May 2021 21:06:44 +0200 Subject: [PATCH] update chat service --- .../src/app/services/chat/chat.service.ts | 80 +++++++------------ 1 file changed, 29 insertions(+), 51 deletions(-) diff --git a/frontend/src/app/services/chat/chat.service.ts b/frontend/src/app/services/chat/chat.service.ts index 7501961..2a95c2d 100644 --- a/frontend/src/app/services/chat/chat.service.ts +++ b/frontend/src/app/services/chat/chat.service.ts @@ -1,6 +1,14 @@ import { Injectable } from '@angular/core'; -import { io, Socket } from "socket.io-client"; -import {Observable} from "rxjs"; +import { Observable } from 'rxjs'; +import { io, Socket } from 'socket.io-client'; + +export interface ChatInfo { + username: string, + date: Date, + room: string, + message: string +} + @Injectable({ providedIn: 'root' @@ -8,68 +16,38 @@ import {Observable} from "rxjs"; export class ChatService { private socket: Socket; - private url = 'http://localhost:3000'; + private url: string; constructor() { - this.socket = io(this.url); + this.url = ''; + this.socket = io(); } - // @ts-ignore - joinRoom(data): void { - this.socket.emit('join', data); + setUrl(url: string){ + this.url = url; + this.setSocket(); } - // @ts-ignore - sendMessage(data): void{ - this.socket.emit('message', data); - } - - getMessage(): Observable { - return new Observable<{user: string, message: string}>(observer => { - this.socket.on('new message', (data) => { - observer.next(data); - }); - return () => { - this.socket.disconnect(); - } + setSocket(){ + this.socket = io(this.url, { + withCredentials: true }); } - newUserJoined() - { - let observable = new Observable<{user:String, message:String}>(observer=>{ - this.socket.on('new user joined', (data)=>{ - observer.next(data); - }); - return () => {this.socket.disconnect();} + sendMessage(username: string | null, room: string, message: string) { + this.socket.emit(room, { + username: username, + date: new Date(), + room: room, + message: message }); - - return observable; } - // @ts-ignore - leaveRoom(data){ - this.socket.emit('leave',data); - } - - userLeftRoom(){ - let observable = new Observable<{user:String, message:String}>(observer=>{ - this.socket.on('left room', (data)=>{ - observer.next(data); + onNewMessage() { + return new Observable(observer => { + this.socket.on('general', infos => { + observer.next(infos); }); - return () => {this.socket.disconnect();} }); - - return observable; } - - getStorage() { - const storage = localStorage.getItem('chats'); - return storage ? JSON.parse(storage) : []; - } - - setStorage(data: any) { - localStorage.setItem('chats', JSON.stringify(data)); - } - }