Exemplo n.º 1
0
        private void btnEnviarArchivo_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                if (lstUsuarios.SelectedIndex >= 0)
                {
                    OpenFileDialog ofd = new OpenFileDialog();
                    ofd.Multiselect = false;

                    if (ofd.ShowDialog() != DialogResult.HasValue)
                    {
                        Stream s = ofd.OpenFile();

                        byte[] bArchivo = new byte[(int)s.Length];
                        int    n        = s.Read(bArchivo, 0, bArchivo.Length);

                        if (n > 0)
                        {
                            AdministrarServicioChat.EnviarArchivo(ofd.SafeFileName, bArchivo);
                        }
                    }
                }
                else
                {
                    txtMensaje.Text = "Debe seleccionar un usuario";
                }
            }
            catch (Exception ex)
            {
                txtMensaje.Text = ex.Message.ToString();
            }
        }
Exemplo n.º 2
0
        public void Unirse(Cliente cliente)
        {
            ListBoxItem item = AdministrarServicioChat.ActualizarConversacion(cliente.Foto,
                                                                              "|||||||||||||||||||| " + cliente.Usuario + " se ha unido al chat ||||||||||||||||||||");

            lstConversacion.Items.Add(item);
            ScrollViewer sv = EnfocarMensaje(lstConversacion);
            //sv.LineDown();
        }
 public static void InnerDuplexChannel_Faulted(object sender, EventArgs e)
 {
     if (!distribuidor.CheckAccess())
     {
         distribuidor.BeginInvoke(DispatcherPriority.Normal, new FaultedInvoker(AdministrarServicioChat.GestionarProxy));
         return;
     }
     AdministrarServicioChat.GestionarProxy();
 }
Exemplo n.º 4
0
 public void RefrescarClientes(List <Cliente> clientes)
 {
     lstUsuarios.Items.Clear();
     ListaUsuarios.Clear();
     foreach (srServicioChat.Cliente c in clientes)
     {
         ListBoxItem item = AdministrarServicioChat.ActualizarConversacion(c.Foto, c.Usuario);
         lstUsuarios.Items.Add(item);
         ListaUsuarios.Add(item, c);
     }
 }
Exemplo n.º 5
0
        private void btnConectar_Click(object sender, RoutedEventArgs e)
        {
            btnConectar.IsEnabled      = false;
            lblEstadoConversacion.Text = "Conectando...";

            if (!AdministrarServicioChat.Conectar(txtUsuario.Text, txtIP.Text, this))
            {
                btnConectar.IsEnabled = true;
            }
            lblEstadoConversacion.Text = AdministrarServicioChat.EstadoConversacion;
        }
Exemplo n.º 6
0
        public void RecibirArchivo(FileMessage fileMsg)
        {
            FileStream fileStrm = new FileStream(rcvFilesPath +
                                                 fileMsg.NombreArchivo, FileMode.Create, FileAccess.ReadWrite);

            fileStrm.Write(fileMsg.Datos, 0, fileMsg.Datos.Length);

            foreach (srServicioChat.Cliente c in this.ListaUsuarios.Values)
            {
                ListBoxItem item = AdministrarServicioChat.ActualizarConversacion(c.Foto, "Archivo recibido, " + fileMsg.NombreArchivo);
                lstConversacion.Items.Add(item);
            }
        }
Exemplo n.º 7
0
        public void RecibirMensaje(Mensaje Mensaje)
        {
            foreach (srServicioChat.Cliente c in this.ListaUsuarios.Values)
            {
                if (c.Usuario == Mensaje.Remitente)
                {
                    ListBoxItem item = AdministrarServicioChat.ActualizarConversacion(c.Foto, Mensaje.Remitente + " : " + Mensaje.Contenido);
                    lstConversacion.Items.Add(item);
                }
            }
            ScrollViewer sv = EnfocarMensaje(lstConversacion);

            sv.LineDown();
        }
    }//Cerrar

    public static void Desconectar()
    {
        if (proxy != null)
        {
            if (proxy.State == CommunicationState.Faulted)
            {
                AdministrarServicioChat.GestionarProxy();;
            }
            else
            {
                proxy.DesconectarAsync(usuarioActual);
            }
        }
    }//Desconectar
    }//ActivarEstaEscribiendo

    public static void DesactivarEstaEscribiendo(String Mensaje)
    {
        if (proxy != null)
        {
            if (proxy.State == CommunicationState.Faulted)
            {
                AdministrarServicioChat.GestionarProxy();;
            }
            else
            {
                if (Mensaje.Length < 1)
                {
                    proxy.EstaEscribiendoAsync(null);
                }
            }
        }
    }//DesactivarEstaEscribiendo
    }//Enviar

    public static void EnviarArchivo(String NombreArchivo, byte[] Contenido)
    {
        if (proxy != null && NombreArchivo != "" && Contenido != null)
        {
            if (proxy.State == CommunicationState.Faulted)
            {
                AdministrarServicioChat.GestionarProxy();;
            }
            else
            {
                FileMessage fMsg = new FileMessage();
                fMsg.NombreArchivo = NombreArchivo;
                fMsg.Datos         = Contenido;
                proxy.EnviarArchivoAsync(fMsg);
            }
        }
    }
    }//Gestionar Proxy

    //Metodo que establece la conexion con el servicio
    public static Boolean Conectar(String Usuario,
                                   String IP,
                                   Object Contexto)
    {
        if (proxy == null)
        {
            try
            {
                usuarioActual         = new Cliente();
                usuarioActual.Usuario = Usuario;
                InstanceContext context = new InstanceContext(Contexto);
                proxy = new ChatClient(context);

                //Definir la direccion IP del servicio
                string servicePath       = proxy.Endpoint.ListenUri.AbsolutePath;
                string serviceListenPort = proxy.Endpoint.Address.Uri.Port.ToString();

                proxy.Endpoint.Address = new EndpointAddress("net.tcp://" + IP + ":" + serviceListenPort + servicePath);


                proxy.Open();

                proxy.InnerDuplexChannel.Faulted += new EventHandler(InnerDuplexChannel_Faulted);
                proxy.InnerDuplexChannel.Opened  += new EventHandler(InnerDuplexChannel_Opened);
                proxy.InnerDuplexChannel.Closed  += new EventHandler(InnerDuplexChannel_Closed);
                proxy.ConectarAsync(usuarioActual);
                proxy.ConectarCompleted += new EventHandler <ConectarCompletedEventArgs>(proxy_ConexionCompletada);
                return(true);
            }
            catch (Exception ex)
            {
                estadoConversacion = "Fuera de Línea: " + ex.Message.ToString();
                ActualizoEstadoConversacion(null, new EventArgs());
                return(false);
            }
        }
        else
        {
            AdministrarServicioChat.GestionarProxy();
            return(true);
        }
    }//Conectar
    }//Desconectar

    public static void ActivarEstaEscribiendo(String Mensaje, Key tecla)
    {
        if (proxy != null)
        {
            if (proxy.State == CommunicationState.Faulted)
            {
                AdministrarServicioChat.GestionarProxy();;
            }
            else
            {
                if (tecla == Key.Enter)
                {
                    Enviar(Mensaje);
                }
                else if (Mensaje.Length < 1)
                {
                    proxy.EstaEscribiendoAsync(usuarioActual);
                }
            }
        }
    }//ActivarEstaEscribiendo
    }//Conectar

    public static void Enviar(String Mensaje)
    {
        if (proxy != null && Mensaje != "")
        {
            if (proxy.State == CommunicationState.Faulted)
            {
                AdministrarServicioChat.GestionarProxy();;
            }
            else
            {
                //Crear el mensaje e iniciar propiedades
                Mensaje msg = new Mensaje();
                msg.Remitente = usuarioActual.Usuario;
                msg.Contenido = Mensaje;

                proxy.EnviarAsync(msg);
                //Indicar a los usuarios que el usuario actual esta escribiendo
                proxy.EstaEscribiendoAsync(null);
            }
        }
    }//Enviar
Exemplo n.º 14
0
 protected override void OnClosing(System.ComponentModel.CancelEventArgs e)
 {
     AdministrarServicioChat.Cerrar();
 }
Exemplo n.º 15
0
 private void btnEnviar_Click(object sender, RoutedEventArgs e)
 {
     AdministrarServicioChat.Enviar(txtMensaje.Text);
     txtMensaje.Text = "";
     txtMensaje.Focus();
 }
Exemplo n.º 16
0
 private void btnDesconectar_Click(object sender, RoutedEventArgs e)
 {
     AdministrarServicioChat.Desconectar();
 }
Exemplo n.º 17
0
 void txtMensaje_KeyUp(object sender, KeyEventArgs e)
 {
     AdministrarServicioChat.DesactivarEstaEscribiendo(txtMensaje.Text);
 }
Exemplo n.º 18
0
 void txtMensaje_KeyDown(object sender, KeyEventArgs e)
 {
     AdministrarServicioChat.ActivarEstaEscribiendo(txtMensaje.Text, e.Key);
 }