Refresh JSF via Socket

Contextualização:
Tenho uma pagina que lista uma descrição e um status (on/off).
As informações vão ser sincronizadas com um Smartphone(Android).
O status pode ser alterado pelo smartphone ou pela página.
Se alterar pelo smartphone, atualiza a página.

Solução:
Eu criei uma aplicação que é um servidor que fica escutando os clientes que se conectam a ele e distrubui a mensagem para todos os clientes.
Entao, tenho o servidor e a aplicação web e o smartphone conectados.

Versões:
JSF(2.0.4) e Primefaces(3.3.1)

Problema encontrado:
Consegui distribuir as mensagens corretamente.
O problema é que não estou conseguindo atualizar a página quando recebo uma mensagem.
Não entendo muito de JSF, estou fazendo nessas tecnologias mais pra aprender mesmo, isso não é nada comercial.
Usei este exemplo do Herbert para fazer minha aplicação: http://uaihebert.com/aplicacao-web-completa-tomcat-jsf-primefaces-jpa-hibernate/

Fontes(Ficou um pouco grande, posso anexar os projetos se necessário):

//Página JSF que quero atualizar
<h:body>
	<ui:composition template="/pages/protected/templates/master.xhtml">
		<ui:define name="divMain">
			<h3>#{bundle.homeEdit}: <h:outputText value="#{homeMB.homeWithRooms.description}" /></h3>
			<h:form id="personsForm">
				<p:dataTable id="homesTable" value="#{homeMB.homeWithRooms.roomList}" var="room" emptyMessage="#{bundle.noRecords}" paginator="true" rows="10"
					paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
					rowsPerPageTemplate="5,10,15">
					<p:column>
						<f:facet name="header">
							<h:outputText value="#{bundle.room}" />
						</f:facet>

						<h:outputText value="#{room.description}" />
					</p:column>
					
					<p:column>
						<p:commandButton value="#{bundle.roomListObject}" icon="ui-icon-contact" ajax="false"
							action="#{roomMB.listObjects()}">
								<f:setPropertyActionListener target="#{roomMB.room}" value="#{room}" />
						</p:commandButton>
					</p:column>
				</p:dataTable>
			</h:form>
		</ui:define>
	</ui:composition>
</h:body>
//ManagedBean da página que quero atualizar
@ManagedBean(name="roomMB")
@ApplicationScoped
public class RoomMB extends AbstractMB implements Serializable {

	private static final long serialVersionUID = 1L;

	public static final String INJECTION_NAME = "#{roomMB}";
	public static final String SELECTED_ROOM = "selectedRoom";
	
	private Room room;
	private Room roomWithObjects;
	private RoomFacade facade;
	private List<Room> roomList;
	
	public String listObjects() {
		ELFlash.getFlash().put(SELECTED_ROOM, room);
		return "/pages/protected/admin/object/objectIndex.xhtml";
	}
	
	public Room getRoomWithObjects() {
		roomWithObjects = getRoomFacade().findRoomWithAllObjects(room.getId());
		return roomWithObjects;
	}
	
	public RoomFacade getRoomFacade() {
		if (facade == null) {
			facade = new RoomFacade();
		}	
		return facade;
	}

	//gets e sets ocultado
}
//Essa classe conecta ao servidor que distribui mensagens qnd inicializar o jboss
@ManagedBean(eager=true)
@ApplicationScoped
public class ClientSocketMB implements Serializable {
	private static final long serialVersionUID = 1L;
	private MyClient client;
	
	public ClientSocketMB() {
		client = new MyClient(Constants.SOCKET_HOST, Constants.SOCKET_PORT);
		
		try {
		client.execute();
		} catch (UnknownHostException e) {
		e.printStackTrace();
		} catch (IOException e) {
		e.printStackTrace();
		}
		
	}
}
//Cliente que se conecta ao servidor
public class MyClient {
	private String host;
	private int port;
	
	public MyClient(String host, int port) {
		this.host = host;
		this.port = port;
	}
	
	public void execute() throws UnknownHostException, IOException {
		Socket client = new Socket(this.host, this.port);
	    
	 // thread para receber mensagens do servidor
		MyReceiver r = new MyReceiver(client.getInputStream());
		new Thread(r).start();
	}	
}
//Quem vai receber a mensagem, onde quero atualizar a pagina
public class MyReceiver implements Runnable {
	private InputStream server;
	
    public MyReceiver(InputStream server) {
    	this.server = server;
    }
	
	@Override
	public void run() {
		Scanner s = new Scanner(this.server);
    	while (s.hasNextLine()) {    		
			//Mensagem recebida, aqui onde queria atualizar a pagina
    		System.out.println(s.nextLine());    		
    	}
	}
}