Skip to content

Commit

Permalink
fin seccion 5
Browse files Browse the repository at this point in the history
  • Loading branch information
hamundnic committed Jan 15, 2019
1 parent 6543426 commit 3174f7f
Show file tree
Hide file tree
Showing 5 changed files with 113 additions and 4 deletions.
10 changes: 9 additions & 1 deletion classes/server.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,11 +28,19 @@ export default class Server{
private escucharSockets(){
console.log('escuchando conecciones - Sockets');
this.io.on('connection',cliente=>{
console.log('Cliente conectado');
// Conectar Cliente
socket.conectarCliente(cliente);

//configurar usuario
socket.configurarUsuario(cliente,this.io);
// console.log('Cliente conectado');
console.log(cliente.id);
// Mensaje
socket.mensaje(cliente,this.io);
// desconectar
socket.desconectar(cliente);



})
}
Expand Down
48 changes: 48 additions & 0 deletions classes/usuario-lista.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
import { Usuario } from './usuario';

export class UsuarioLista{

private lista:Usuario[]=[];

constructor(){

}
// Agregar un usuario
public agregar(usuario:Usuario){
this.lista.push(usuario);
console.log(this.lista);
return usuario;
}

public actualizarNombre(id:string,nombre:string){
for(let usuario of this.lista)
{
if(usuario.id===id){
usuario.nombre=nombre;
break;
}
}

console.log('======= Actualizando Usuario =========');
console.log(this.lista);
}
// obtener lista

public getLista(){
return this.lista;
}

public getUsaurio(id:string){return this.lista.find(usuario=> usuario.id=== id)}

public getUsuarioEnSala(sala:string){return this.lista.filter(usuario=>usuario.sala===sala)}

// Borrar Usuario

public borrarUsuarios(id:string){
const tempUsuario=this.getUsaurio(id);
this.lista= this.lista.filter(usuario=>usuario.id !== id);
//console.log(this.lista);
return tempUsuario;
}

}
16 changes: 16 additions & 0 deletions classes/usuario.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@

export class Usuario {

public id: string;
public nombre:string;
public sala:string;
constructor(id:string){

this.id=id;
this.nombre='sin-nombre';
this.sala='sin-sala';
}



}
14 changes: 13 additions & 1 deletion routes/router.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
import {Router,Request,Response} from 'express';
import Server from '../classes/server';
import { mensaje } from '../sockets/socket';


const router:Router=Router();
Expand All @@ -12,7 +14,9 @@ router.get('/mensajes',(req:Request,res:Response)=>{
router.post('/mensajes',(req:Request,res:Response)=>{
const cuerpo=req.body.cuerpo;
const de=req.body.de;

const server=Server.instance;
const payload={cuerpo, de};
server.io.emit('mensaje-nuevo',payload);
res.json({
ok:true,
cuerpo,
Expand All @@ -24,6 +28,14 @@ router.post('/mensajes/:id',(req:Request,res:Response)=>{
const cuerpo=req.body.cuerpo;
const de=req.body.de;
const id= req.params.id;

const payload={
de,
cuerpo
}

const server = Server.instance;
server.io.in(id).emit('mensaje-privado',payload);
res.json({
ok:true,
cuerpo,
Expand Down
29 changes: 27 additions & 2 deletions sockets/socket.ts
Original file line number Diff line number Diff line change
@@ -1,24 +1,49 @@
import { Socket } from 'socket.io';
import Server from '../classes/server';
import socketIO from 'socket.io';
import { UsuarioLista } from '../classes/usuario-lista';
import { Usuario } from '../classes/usuario';


export const usuariosConectados= new UsuarioLista();

export const conectarCliente=(cliente:Socket)=>{
const usuario = new Usuario(cliente.id);
usuariosConectados.agregar(usuario);
}

export const desconectar = (cliente: Socket) => {
cliente.on('disconnect' ,()=>{
console.log('Cliente desconectado');
usuariosConectados.borrarUsuarios(cliente.id);
});
}



// Escuchar mensaje
export const mensaje =(Cliente:Socket,io:SocketIO.Server)=>{
export const mensaje =(cliente:Socket,io:SocketIO.Server)=>{

Cliente.on('mensaje',(payload:{de:string,cuerpo:string})=>{
cliente.on('mensaje',(payload:{de:string,cuerpo:string})=>{
console.log('Mensaje recibido',payload);
io.emit('mensaje-nuevo',payload);
});

}

//configurar usuario
export const configurarUsuario =(cliente:Socket,io:SocketIO.Server)=>{

cliente.on('configurar-usuario',(payload:{nombre:string},callback:Function)=>{
// console.log('Configurando Usuario',payload.nombre);

usuariosConectados.actualizarNombre(cliente.id,payload.nombre)
callback({
ok:true,
mensaje:`Usuario ${payload.nombre}, cofigurado`
})

// io.emit('mensaje-nuevo',payload);
});

}

0 comments on commit 3174f7f

Please sign in to comment.