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 { 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<any> {
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));
}
}