All pastes #1365243 Raw Edit

Comet Client for Android

public java v1 · immutable
#1365243 ·published 2009-03-19 13:25 UTC
rendered paste body
package hk.com.novare.cometclient;import org.cometd.Client;import org.cometd.Message;import org.cometd.MessageListener;import org.mortbay.cometd.AbstractBayeux;import org.mortbay.cometd.client.BayeuxClient;import org.mortbay.jetty.client.Address;import org.mortbay.jetty.client.ContentExchange;import org.mortbay.jetty.client.HttpClient;import org.mortbay.util.ajax.JSON;import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.util.Log;import android.view.View;import android.widget.Button;import android.widget.Toast;public class CometClientActivity extends Activity {	private volatile boolean running;		private Button fireButton = null;		private Handler labelHandler = new Handler() {		@Override		public void handleMessage(android.os.Message msg) {			if (fireButton != null) {				fireButton.setText((String) msg.obj);			}		}			};	    /** Called when the activity is first created. */    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);                fireButton = (Button) findViewById(R.id.fireButton);                fireButton.setOnClickListener(new View.OnClickListener() {			public void onClick(View v) {				new Thread(new Runnable() {					public void run() {						if (running == false) {							android.os.Message m = labelHandler.obtainMessage(0, "Stop");							labelHandler.sendMessage(m);							running = true;							goDojo();						} else {							android.os.Message m = labelHandler.obtainMessage(0, "Start");							labelHandler.sendMessage(m);							running = false;						}					}				}).start();			}        	        });    }        void goDojo() {		final HttpClient httpClient = new HttpClient();		try {			httpClient.setConnectorType(HttpClient.CONNECTOR_SOCKET);			// Fails immediately//			httpClient.setConnectorType(HttpClient.CONNECTOR_SELECT_CHANNEL);			httpClient.start();			final BayeuxClient bayeuxClient = new BayeuxClient(httpClient,					new Address("10.9.7.90", 8080), "/cometd/cometd");			final MessageListener messageListener = new MessageListener() {				public void deliver(Client arg0, Client arg1, Message arg2) {					Log.d("CometClientActivity", arg2.toString());				}			};			bayeuxClient.addListener(messageListener);			bayeuxClient.start();						final String channel = "/chat/demo";						bayeuxClient.subscribe(channel);								final String name = "clientName";			final String chat = "smallMessage";			Object msg=new JSON.Literal("{\"user\":\"" + name + "\",\"chat\":\"" + chat + "\"}");						int n = 0;			while (running) {				bayeuxClient.publish(channel, msg, String.valueOf(n++));				try {					Thread.sleep(10000L);				} catch (InterruptedException e) {					// Nothing				}							}								} catch (Exception e) {			Log.d("CometClientActivity", "Comet Fail", e);		}    }     }