update chat service
This commit is contained in:
parent
d6e459bc9b
commit
72368475ca
1 changed files with 29 additions and 51 deletions
|
|
@ -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));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Reference in a new issue