update chat service

This commit is contained in:
NyxiumYuuki 2021-05-28 21:06:44 +02:00
parent d6e459bc9b
commit 72368475ca

View file

@ -1,6 +1,14 @@
import { Injectable } from '@angular/core'; 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({ @Injectable({
providedIn: 'root' providedIn: 'root'
@ -8,68 +16,38 @@ import {Observable} from "rxjs";
export class ChatService { export class ChatService {
private socket: Socket; private socket: Socket;
private url = 'http://localhost:3000'; private url: string;
constructor() { constructor() {
this.socket = io(this.url); this.url = '';
this.socket = io();
} }
// @ts-ignore setUrl(url: string){
joinRoom(data): void { this.url = url;
this.socket.emit('join', data); this.setSocket();
} }
// @ts-ignore setSocket(){
sendMessage(data): void{ this.socket = io(this.url, {
this.socket.emit('message', data); withCredentials: true
}
getMessage(): Observable<any> {
return new Observable<{user: string, message: string}>(observer => {
this.socket.on('new message', (data) => {
observer.next(data);
});
return () => {
this.socket.disconnect();
}
}); });
} }
newUserJoined() sendMessage(username: string | null, room: string, message: string) {
{ this.socket.emit(room, {
let observable = new Observable<{user:String, message:String}>(observer=>{ username: username,
this.socket.on('new user joined', (data)=>{ date: new Date(),
observer.next(data); room: room,
message: message
}); });
return () => {this.socket.disconnect();} }
onNewMessage() {
return new Observable(observer => {
this.socket.on('general', infos => {
observer.next(infos);
}); });
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);
}); });
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));
}
} }