Está en la página 1de 3

Chat con WebSocket

1- Creamos un Web Socket EndPoint y lo llamamos Proceso y


escribimos el siguiente cdigo:

package ws;

import java.io.IOException;
import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
import javax.websocket.OnClose;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.server.ServerEndpoint;

/**
*
* @author usuario
*/
@ServerEndpoint("/proceso")
public class Proceso {
private static Set<Session> sessiones =
Collections.synchronizedSet(new HashSet<Session>());

@OnOpen
public void onOpen(Session session) {
System.out.println(session.getId() + "Ha abierto una conexion");
try {
sessiones.add(session);
session.getBasicRemote().sendText("Conexion establecida");
} catch (IOException ex) {
}
}

@OnMessage
public void onMessage(String mensaje, Session session) {
System.out.println("Mensaje" + session.getId() + mensaje);
try {
for (Session s : sessiones) {
s.getBasicRemote().sendText( mensaje);
}

} catch (IOException ex) {


}
}

@OnClose
public void onClose(Session session) {
sessiones.remove(session);
System.out.println("Session " + session.getId() + " ha terminado");
}
}

2- Modificamos el archivo index.jsp

<!DOCTYPE html>
<!--
To change this license header, choose License Headers in Project
Properties.
To change this template file, choose Tools | Templates
and open the template in the editor.
-->
<html>
<head>
<title>Chat on Line</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-
scale=1.0">
</head>
<body>
<h4>Usuario:</h4>
<input type="text" id="usuarioinput">
<h4>Mensaje:</h4>
<input type="text" id="messageinput">
<div>
<p></p>
<p></p>
<button type="button" onclick="openSocket();">Open</button>
<button type="button" onclick="send();">Send</button>
<button type="button"
onclick="closeSocket();">Close</button>
</div>
<div id="messages"></div>
<script type="text/javascript">
var webSocket;
var messages = document.getElementById("messages");
function openSocket() {
if (webSocket !== undefined && webSocket.readyState
!== WebSocket.CLOSED)
{
writeResponse("WebSocket ya esta abierto");
return;
}
webSocket = new WebSocket("ws://"+
document.location.host+ document.location.pathname+"proceso");
webSocket.onopen = function (event)
{
if (event.data === undefined)
return;
writeResponse(event.data);
};
webSocket.onmessage = function (event)
{
writeResponse(event.data);
};
webSocket.onclose = function (event)
{
writeResponse("Conexion cerrada");
};
}
function send()
{
try {
var usuario =
document.getElementById("usuarioinput").value;
var text =
document.getElementById("messageinput").value;
webSocket.send(usuario + " dice: " + text);
document.getElementById("messageinput").value = "";
}
catch (err) {
}
}
function closeSocket()
{
try {
webSocket.close();
}
catch (err) {
}
}
function writeResponse(text)
{
messages.innerHTML += "<br/>" + text;
}
</script>
</body>
</html>

También podría gustarte