elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Únete al Grupo Steam elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Problema Java
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] 3 Ir Abajo Respuesta Imprimir
Autor Tema: Problema Java  (Leído 9,803 veces)
~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 1.125



Ver Perfil
Re: Problema Java
« Respuesta #10 en: 14 Junio 2014, 18:47 pm »

Never give up :P

Lo que pasa que cada vez que el cliente (javascript en este caso) se conecta al servidor de Websockets, se crea una sesión nueva para ese cliente. Y cada vez que otro cliente ingresa es otra sesión nueva independiente de las demás. Por lo tanto todos mantienen una comunicación independiente, algo así como una conexión Punto a Punto.

Lo que puedes hacer obtener todas las sesiones activas en el servidor, y ir mandando el mensaje a todas las sesiones abiertas.

No utilices socket multicast porque seria complicarse mucho mas, y no obtendrías las ventajas, performance ni el nivel de abstracción que te ofrece Websockets. Y encimas tendrías que configurar puertos de los clientes y tener en cuenta que el firewall no bloquee esos puertos... Y para lo que deseas hacer no deberías utilizar socket multicast y tampoco no existe una api en javascript para recibir dichos mensajes.

Tomando en cuenta que Websockets puede correr sobre HTTP por lo tanto no tendrás problema, prueba de eso es que pudiste establecer una comunicación cliente servidor sin mucho problema :D.

Te dejo unos links que te podrían ayudar mucho en lo que te interesa hacer:
http://stackoverflow.com/questions/18481597/how-to-get-an-existing-websocket-instance

Este ultimo link tomarlo de referencia.
http://java.dzone.com/articles/creating-websocket-chat

PD: Te recomiendo que te leas sobre la especificación de WebSocket de JavaEE 7, para que no tengas este tipo de problema. Ya que sabrás como funciona todo.

Saludos.


En línea

Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.
luismi_12

Desconectado Desconectado

Mensajes: 16


Ver Perfil
Re: Problema Java
« Respuesta #11 en: 14 Junio 2014, 18:59 pm »

Ya he estado mirando esos ejemplos, pero como podria hacer para que se hiciera un broadcast cada vez que hay un onmensaje, si me puedierais ayudar por favor.


En línea

~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 1.125



Ver Perfil
Re: Problema Java
« Respuesta #12 en: 14 Junio 2014, 19:02 pm »

En el primer LINK, ponen un ejemplo compa. Te recomiendo que lo examines y dime que hace el trozo de código que acabo de poner copiado del link antes de volver a postear.

Código
  1.  public void broadcastArticle(@Observes @NewArticleEvent ArticleEvent articleEvent) {
  2.    for (Session s : sessions) {
  3.      if (s.isOpen()) {
  4.        try {
  5.          // send the article summary to all the connected clients
  6.          s.getBasicRemote().sendText("New article up:" + articleEvent.getArticle().getSummary());
  7.        } catch (IOException ex) { ... }
  8.      }
  9.    }
  10.  }
En línea

Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.
luismi_12

Desconectado Desconectado

Mensajes: 16


Ver Perfil
Re: Problema Java
« Respuesta #13 en: 14 Junio 2014, 19:05 pm »

Lo que hace es por cada sesion que hay abierta mandarles el articulo. Lo que pasa que si lo modifico en local para que mande lo recibe del formulario ya no me funciona.
En línea

~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 1.125



Ver Perfil
Re: Problema Java
« Respuesta #14 en: 14 Junio 2014, 19:08 pm »

Lo que hace es por cada sesion que hay abierta mandarles el articulo. Lo que pasa que si lo modifico en local para que mande lo recibe del formulario ya no me funciona.

No entendí. Pero piensa porque no esta funcionando y piensa como haz programado todo, y llegaras a una conclusión.
En línea

Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.
luismi_12

Desconectado Desconectado

Mensajes: 16


Ver Perfil
Re: Problema Java
« Respuesta #15 en: 14 Junio 2014, 19:15 pm »

Vale le seguire dando vueltas, pero ahora mismo lo tengo asi
Código:
package com.apuntesdejava.websocket;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;

import javax.ejb.EJB;
import javax.websocket.OnClose;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.RemoteEndpoint;
import javax.websocket.Session;
import javax.websocket.server.ServerEndpoint;

@ServerEndpoint("/broadcast")
public class MyEndpoint {
  // EJB that fires an event when a new article appears
  @EJB
  // a collection containing all the sessions
  private static final Set<Session> sessions =
          Collections.synchronizedSet(new HashSet<Session>());

  @OnOpen
  public void onOpen(final Session session) {
    sessions.add(session);
  }

  @OnClose
  public void onClose(final Session session) {
    // remove the session from the set
    sessions.remove(session);
  }
  @OnMessage
  public void broadcastArticle(String message) {
    for (Session s : sessions) {
      if (s.isOpen()) {
        try {
          // send the article summary to all the connected clients
          s.getBasicRemote().sendText(message);
        } catch (IOException ex) { }
      }
    }
  }
}

Y el scrip asi

Código:
<script type="text/javascript">
                var wsUri = "ws://localhost:8080/Hlc/broadcast";
                var websocket = new WebSocket(wsUri); //creamos el socket
                websocket.onopen = function(evt) {
                };
                websocket.onmessage = function(evt) {
                document.getElementById("msgArea").textContent += message.data + "\n"; 
                console.log(message.data);
                };
                websocket.onerror = function(evt) {
                    log("oho!.. error:" + evt.data);
                };
     
     
                function log(mensaje) { //aqui mostrará el LOG de lo que está haciendo el WebSocket
                    var logDiv = document.getElementById("log");
                    logDiv.innerHTML += (mensaje + '<br/>');
                }
                function EnviarServidor() {
                websocket.send(document.getElementById("msg").value)
                document.getElementById("msg").value = "";
                }
     
            </script>
En línea

~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 1.125



Ver Perfil
Re: Problema Java
« Respuesta #16 en: 14 Junio 2014, 19:49 pm »

Lo acabo de probar el código y funciona con múltiple cliente.

Pero tuve que editar un poco el código Java para quitar cosas innecesarias y el cliente javascript tienen errores, uno de ellos es que nunca veras lo mensaje que el servidor envía al cliente...

Y la razón porque no te funciona y de tus problemas es que haz copiado código o trozos de código y me refiero mas al cliente en javascript. Y no sabes a nivel técnico 100% como funciona lo que haz hecho porque haz copiado y como no entiendes todo lo que tienes entonce no sabes donde y como solucionar el problema.

Así que ya sabes, a debuguear ese código javascript y dejar de copiar.

Saludos.
En línea

Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.
luismi_12

Desconectado Desconectado

Mensajes: 16


Ver Perfil
Re: Problema Java
« Respuesta #17 en: 14 Junio 2014, 19:52 pm »

Me podrias decir, mas o menos por donde estan los errores, ya se que lo mejor es aprender por uno mismo pero ayer me revento la aplicacion donde usaba este codigo y llevo dos dias contando hoy, dando vueltas a por que no se contecta a la base de datos, digo si puedes, es que no voy muy sobrado de tiempo.
En línea

~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 1.125



Ver Perfil
Re: Problema Java
« Respuesta #18 en: 14 Junio 2014, 19:57 pm »

Me podrias decir, mas o menos por donde estan los errores, ya se que lo mejor es aprender por uno mismo pero ayer me revento la aplicacion donde usaba este codigo y llevo dos dias contando hoy, dando vueltas a por que no se contecta a la base de datos, digo si puedes, es que no voy muy sobrado de tiempo.

Solo dos días? En el mundo de la programacion duras varios dias con un problema es normal. Y gracias a esos problemas es crecemos como programadores  :D

Cuando lo soluciones tu mismo, alcanzaras un nuevo nivel de programación!!!

Y ese derecho no te lo pienso quitar.
En línea

Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.
luismi_12

Desconectado Desconectado

Mensajes: 16


Ver Perfil
Re: Problema Java
« Respuesta #19 en: 14 Junio 2014, 19:58 pm »

Ya lo se, pero es que esto estaba completo, pero es parte de una aplicacion que debo entregar este lunes, me pegue dias investigando ya que no habia estudiado ni trabajado en la vida con websocket.
En línea

Páginas: 1 [2] 3 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
problema en java
Java
mitsumy 2 2,403 Último mensaje 16 Enero 2007, 16:27 pm
por mitsumy
Problema con java
Java
ZeroneR 3 2,733 Último mensaje 9 Noviembre 2008, 20:46 pm
por ZeroneR
Problema en Java
Java
Cooltan 0 1,782 Último mensaje 31 Marzo 2011, 12:51 pm
por Cooltan
Problema con Java
Java
Tuplado 0 1,312 Último mensaje 16 Octubre 2012, 00:16 am
por Tuplado
[Problema] Java 3D
Java
adeur 3 3,200 Último mensaje 6 Febrero 2014, 00:18 am
por MidBifroid
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines