Olá, eu consegui fazer oque eu queria, agora se uma pessoa por exemplo está em um chat na sala discussão de JavaEE por exemplo, as mensagens que ele enviar no chat serão entregues apenas na sala de Java EEE e não nas salas de discussão de phyton,php...
@ServerEndpoint("/chat/{room}")
public class ChatEndPoint implements Serializable{
private static final long serialVersionUID = 1L;
private static List<Session> sessions = new ArrayList<>();
@OnOpen
public void onOpen(Session session, @PathParam("room") final String room, EndpointConfig endpointConfig) {
session.getUserProperties().put("room", room);
sessions.add(session);
}
public void send(Mensagem mensagem) {
for(Session session : sessions) {
String room = (String) session.getUserProperties().get("room");
if(session.isOpen() && room.equals(mensagem.getSala().getSalaId().toString()) ) {
try {
session.getBasicRemote().sendText(mensagem.toJson());
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
@OnClose
public void onClose(Session session, CloseReason closeReason) {
sessions.remove(session);
}
}
<script type="text/javascript">
var canal = new WebSocket("ws://localhost:8080#{request.contextPath}/chat/#{chatMB.sala.salaId}");
canal.onmessage= function(message){
//...
}
</script>