/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package cz.kiwi.cometd.websocket;

import javax.servlet.http.HttpServletRequest;

import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.nio.SelectChannelConnector;
import org.eclipse.jetty.util.log.Log;
import org.eclipse.jetty.util.log.Logger;
import org.eclipse.jetty.websocket.WebSocket;
import org.eclipse.jetty.websocket.WebSocketFactory;
import org.eclipse.jetty.websocket.WebSocketHandler;

public class WebSocketJettyServer extends Server
{
    private static final Logger logger = Log.getLogger(WebSocketJettyServer.class);
    
    public static WebSocketJettyHandler webSocketJettyHandler = new WebSocketJettyHandler();
    
    SelectChannelConnector _connector;
    WebSocketHandler _wsHandler;
    
    
    public WebSocketJettyServer(int port)
    {
        _connector = new SelectChannelConnector();
        _connector.setPort(port);              
        
        _wsHandler = new WebSocketHandler()
        {  
            public WebSocket doWebSocketConnect(HttpServletRequest request, String protocol)
            {              
                logger.info("Protocol: " + protocol);
                return webSocketJettyHandler;
            }
        };
        
        
        // Create and configure WS factory
    WebSocketFactory _wsFactory=new WebSocketFactory(new WebSocketFactory.Acceptor()
    {
      public boolean checkOrigin(HttpServletRequest request, String origin)
      {
        // Allow all origins
        return true;
      }
 
      public WebSocket doWebSocketConnect(HttpServletRequest request, String protocol)
      {
         if ("chat".equals(protocol))
           return webSocketJettyHandler;
         return null;
      }
    });
    _wsFactory.setBufferSize(4096);
    _wsFactory.setMaxIdleTime(60000);
    

        setHandler(_wsHandler);
        addConnector(_connector);
    }

    
    
   


}
