Ich baue eine Websocket-Anwendung mit Glassfish Ich brauche in einem bestimmten Ereignis mein Server zu senden Nachricht an alle angeschlossenen Clients. Ich kann Nachrichten von beiden senden und empfangen, aber ich kann den Klassenserver nicht zum Senden von Nachrichten verwenden.Senden von Nachrichten vom Server an Websocket-Clients
Meine Serverklasse hat die folgende Stelle:
@ApplicationScoped @ServerEndpoint("/actions") public class DeviceWebSocketServer {
@Inject
private DeviceSessionHandler sessionHandler;
@OnOpen
public void open(Session session) {
sessionHandler.addSession(session);
}
@OnClose
public void close(Session session) {
sessionHandler.removeSession(session);
}
@OnError
public void onError(Throwable error) {
Logger.getLogger(DeviceWebSocketServer.class.getName()).log(Level.SEVERE, null, error);
}
@OnMessage
public void handleMessage(String message, Session session) {
System.out.println("Chegou uma mensagem: " + message);
System.out.println("Na sessao: " + session.getId());
try (JsonReader reader = Json.createReader(new StringReader(message))) {
JsonObject jsonMessage = reader.readObject();
if ("add".equals(jsonMessage.getString("action"))) {
Device device = new Device();
device.setName(jsonMessage.getString("name"));
device.setDescription(jsonMessage.getString("description"));
device.setType(jsonMessage.getString("type"));
device.setStatus("Off");
sessionHandler.addDevice(device);
}
if ("remove".equals(jsonMessage.getString("action"))) {
int id = (int) jsonMessage.getInt("id");
sessionHandler.removeDevice(id);
}
if ("toggle".equals(jsonMessage.getString("action"))) {
int id = (int) jsonMessage.getInt("id");
sessionHandler.toggleDevice(id);
}
}
}
Wie sende ich Nachrichten an Kunden nach Empfang eines Ereignisses? Sollte ich meinen Klassenserver instanziieren?