Java 重定向到所有客户端中的一个页面(每个客户端都是SessionScoped ManagedBean)

Java 重定向到所有客户端中的一个页面(每个客户端都是SessionScoped ManagedBean),java,html,ajax,jsf,jsf-2,Java,Html,Ajax,Jsf,Jsf 2,我有一个有多个用户的页面(客户机1、客户机2等),我想按“Salir de reunion”(按钮1)将我重定向到所有客户机上的主页(/Public/Inicio.xhtml) 每个客户端都是一个会话范围的ManagedBean 我只会在按下按钮的用户(客户端)中重定向到主页(/Public/Inicio.xhtml)。 我想在所有客户端(浏览器)上执行重定向。我该怎么办 ReunionActiva.xhtml <h:panelGrid id="reunionPanel" col

我有一个有多个用户的页面(客户机1、客户机2等),我想按“Salir de reunion”(按钮1)将我重定向到所有客户机上的主页(/Public/Inicio.xhtml)

每个客户端都是一个会话范围的ManagedBean

我只会在按下按钮的用户(客户端)中重定向到主页(/Public/Inicio.xhtml)。 我想在所有客户端(浏览器)上执行重定向。我该怎么办

ReunionActiva.xhtml

    <h:panelGrid id="reunionPanel" columns="2" >
            <h:commandButton value="Salir de Reunion" styleClass="btn" action="#{reunionBean.salirReunion}"  ></h:commandButton>                
    </h:panelGrid>

我的按钮“退出会议”的业务逻辑是:

ReunionManagedBean.java@ManagedBean(name=“usuarioBean”)

公共字符串sarirreuon(){
Cuenta ctacordinador=participanteF.getcuentarounion(reu,reuF.getCoordinadorReunion(reu.getIdReunion());
Cuenta ctapicipante=ctaF.getcuentabyusario(usuarioActualBean.getCurrent(),ctacoordinator.getServidorTareas());
//如果用户是管理员,那么我想删除会议的所有用户并关闭取消会议
if(ctaCoordinador.getId().equals(ctapparticipante.getId())){
Calendar cal=Calendar.getInstance();
reu.setFechaFin(cal.getTime());
reu.setEstado(“Cerrada”);//它的意思是setStatus CLOSE
reuF.修改联合会(reu);
列表p=参与者F.getAllParticipantes(reu);
for(对象元素:p){
CuentHasReunion部分=(CuentHasReunion)元素;
participanteF.bajaParticipante(part);//这里我从会议中删除所有用户
//在这里,我需要重定向到所有客户端(Client1、Client2)
}
ReunionSingleton.eliminarReunionActiva(reu);
}
//如果用户不是管理员,那么我只删除单击“salir Reumning”按钮的用户
否则{
参与方Bajapante(参与方getParticipante(CTA参与方,reu));
}
return“/Public/Reunion.xhtml?faces redirect=true”;
}
看一看(似乎是这个街区的第一批孩子),然后。通常web是基于请求的,因此每个客户端都需要请求刷新。我相信这些允许客户机通过ajax定期询问服务器上是否有任何有趣的内容,而请求数据包很少。如果服务器说是,客户端则说更新我。无论如何,我想这就是你可能要找的


如果您需要更同步的东西,您可能需要使用网络套接字或RMI(可能是通过小程序)实现一些东西

在普通的JSF2/Ajax中,定期调用组件/Ajax调用,检查会议是否仍然处于活动状态,如果没有,则导致重定向。在Primefaces中,有一个组件实现了这一点,并显示为“从服务器向浏览器发送消息”,但我记不起它的名称,也没有使用过它。
public String salirReunion(){

    Cuenta ctaCoordinador=participanteF.getCuentaReunion(reu, reuF.getCoordinadorReunion(reu.getIdReunion()));
    Cuenta ctaParticipante=ctaF.getCuentaByUsuario(usuarioActualBean.getCurrent(), ctaCoordinador.getServidorTareas());

    // If user is ADMIN then I want to delete all user of meeting and close de Meeting
    if(ctaCoordinador.getId().equals(ctaParticipante.getId())){
        Calendar cal = Calendar.getInstance();
        reu.setFechaFin(cal.getTime());
        reu.setEstado("Cerrada"); // It´s meaning setStatus CLOSE
        reuF.modificacionReunion(reu);

        List<CuentaHasReunion> p=participanteF.getAllParticipantes(reu);
        for (Object element : p) {
            CuentaHasReunion part= (CuentaHasReunion) element;
            participanteF.bajaParticipante(part); //Here I delete all user from meeting
            // Here is where I need to do the redirect to all Clients (Client1 , Client2)
         }
        ReunionSingleton.eliminarReunionActiva(reu);
    }
    // If user isn't ADMIN then I only delete user who click the button "salir reunion"
    else{
        participanteF.bajaParticipante(participanteF.getParticipante(ctaParticipante, reu));

    }

    return "/Public/Reunion.xhtml?faces-redirect=true";
}