001package de.deepamehta.plugins.websockets;
002
003import de.deepamehta.plugins.websockets.service.WebSocketsService;
004import de.deepamehta.core.osgi.PluginActivator;
005
006import java.util.logging.Level;
007import java.util.logging.Logger;
008
009
010
011public class WebSocketsPlugin extends PluginActivator implements WebSocketsService {
012
013    // ------------------------------------------------------------------------------------------------------- Constants
014
015    private static final int WEBSOCKETS_PORT = 8081;
016
017    // ---------------------------------------------------------------------------------------------- Instance Variables
018
019    private WebSocketsServer server;
020
021    private Logger logger = Logger.getLogger(getClass().getName());
022
023    // -------------------------------------------------------------------------------------------------- Public Methods
024
025    // *** WebSocketsService Implementation ***
026
027    @Override
028    public void broadcast(String pluginUri, String message) {
029        server.broadcast(pluginUri, message);
030    }
031
032    // *** Hook Implementations ***
033
034    @Override
035    public void init() {
036        try {
037            logger.info("##### Starting Jetty WebSocket server #####");
038            server = new WebSocketsServer(WEBSOCKETS_PORT, dms);
039            server.start();
040            // ### server.join();
041            logger.info("### Jetty WebSocket server started successfully");
042        } catch (Exception e) {
043            logger.log(Level.SEVERE, "Starting Jetty WebSocket server failed", e);
044        }
045    }
046
047    @Override
048    public void shutdown() {
049        try {
050            logger.info("##### Stopping Jetty WebSocket server #####");
051            server.stop();
052        } catch (Exception e) {
053            logger.log(Level.SEVERE, "Stopping Jetty WebSocket server failed", e);
054        }
055    }
056}