import jakarta.websocket.*;
import jakarta.websocket.server.ServerEndpoint;
@ServerEndpoint("/whatever")
public class SomeOurWebsocketServerEndpointClass
{
// it is possible to inject references to CDI beans (session or application)
@Inject
SomeAppOrSessionBean bean;
@OnOpen
public void open(Session session, EndpointConfig conf)
{
// websocket session allows us to communicate with the other side
}
@OnClose
public void close(Session session, CloseReason reason)
{
// if the connection has been closed, we may want to remove it from our datastructures, free resources, etc.
}
@OnMessage
public void processGreeting(String message, Session session) {
System.out.println("Greeting received:" + message);
// send some response back to javascript
sessesion.getBasicRemote().sendText("some message to send back");
}
@OnError
public void onError(Session session, Throwable throwable) {
// any error handling here
}
V nasledujúcom jednoduchom ilustratívnom príklade vytvoríme malú webovú aplikáciu - hru pre viacerých používateľov, ktorí hádajú tajné číslo vygenerované na serveri. Ten, ktorému sa to podarí skôr, získa bod. Hociktorý používateľ môže hru kedykoľvek reštartovať, potom sa háda od začiatku a ten, čo uhádne získa ďalší bod. Vytvoríme dve verzie: prvá bude založená len na statických stránkach a requestoch, používateľ sa niečo dozvie vždy až po odoslaní svojho pokusu o uhádnutie čísla. Druhá verzia bude využívať websocket: v prípade, že niekto číslo uhádne, všetkým hráčom sa o tom hneď zobrazí správa. Naviac, všetkým hráčom sa zobrazuje aktuálny počet hráčov pripojených na server.