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 { 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));
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Reference in a new issue