Vale le seguire dando vueltas, pero ahora mismo lo tengo asi
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
<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>