1
glassfishを使用してwebsocketアプリケーションを構築しています。指定されたイベントで、接続されているすべてのクライアントにメッセージを送信するためにサーバーが必要です。両方からメッセージを送受信できますが、クラスサーバーを使用してメッセージを送信することはできません。私は、イベントを受け取った後、顧客にメッセージを送信するにはどうすればよいサーバーからwebsocketクライアントにメッセージを送信
@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);
}
}
}
:
私のサーバークラスには、次の体を持っていますか?クラスサーバーをインスタンス化する必要がありますか?