All Downloads are FREE. Search and download functionalities are using the official Maven repository.

main.java.com.dragome.web.serverside.debugging.websocket.DragomeWebSocketHandler Maven / Gradle / Ivy

There is a newer version: 0.96-beta4
Show newest version
/*******************************************************************************
 * Copyright (c) 2011-2014 Fernando Petrola
 * 
 * This file is part of Dragome SDK.
 * 
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the GNU Public License v3.0
 * which accompanies this distribution, and is available at
 * http://www.gnu.org/licenses/gpl.html
 ******************************************************************************/
package com.dragome.web.serverside.debugging.websocket;

import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;

import org.atmosphere.cpr.AtmosphereResourceEvent;
import org.atmosphere.cpr.AtmosphereResourceEventListenerAdapter;
import org.atmosphere.cpr.Broadcaster;
import org.atmosphere.cpr.BroadcasterFactory;
import org.atmosphere.websocket.WebSocket;

import com.dragome.services.WebServiceLocator;
import com.dragome.web.debugging.messages.ChannelReceiverImpl;
import com.dragome.web.debugging.messages.Receiver;
import com.dragome.web.debugging.messages.Sender;

public class DragomeWebSocketHandler
{
	private static Logger LOGGER= Logger.getLogger(DragomeWebSocketHandler.class.getName());
	public static final String DRAGOME_WEBSOCKET= "/dragome-websocket";

	public void onClose(WebSocket webSocket)
	{
	};

	public void onOpen(WebSocket webSocket) throws IOException
	{
		final Broadcaster broadcaster= webSocket.resource().getBroadcaster();
		Receiver configuredReceiver= WebServiceLocator.getInstance().getServerToClientMessageChannel().getReceiver();
		if (!(configuredReceiver instanceof ChannelReceiverImpl))
			WebServiceLocator.getInstance().getServerToClientMessageChannel().setReceiver(new ChannelReceiverImpl());
		else
			configuredReceiver.reset();

		WebServiceLocator.getInstance().getServerToClientMessageChannel().setSender(new Sender()
		{
			public void send(String aMessage)
			{
				broadcaster.broadcast(aMessage);
			}
		});

		WebServiceLocator.getInstance().getServerToClientMessageChannel().getReceiver().reset();

		webSocket.resource().setBroadcaster(BroadcasterFactory.getDefault().lookup(DRAGOME_WEBSOCKET, true));
		webSocket.resource().addEventListener(new AtmosphereResourceEventListenerAdapter()
		{
			public void onDisconnect(AtmosphereResourceEvent event)
			{
				if (event.isCancelled())
				{
					LOGGER.log(Level.INFO, "Browser {0} unexpectedly disconnected", event.getResource().uuid());
				}
				else if (event.isClosedByClient())
				{
					LOGGER.log(Level.INFO, "Browser {0} closed the connection", event.getResource().uuid());
				}
			}
		});
	}
	public void onByteMessage(WebSocket webSocket, byte[] data, int offset, int length) throws IOException
	{
	}

	public void onTextMessage(WebSocket webSocket, String message) throws IOException
	{
		WebServiceLocator.getInstance().getServerToClientMessageChannel().getReceiver().messageReceived(message);
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy