Skip to content

Instantly share code, notes, and snippets.

@mnutt
Created July 21, 2009 14:22
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mnutt/151353 to your computer and use it in GitHub Desktop.
Save mnutt/151353 to your computer and use it in GitHub Desktop.
package com.aboxo.ajax;
import org.mortbay.jetty.Server;
import org.mortbay.jetty.Handler;
import org.mortbay.jetty.Connector;
import org.mortbay.jetty.nio.SelectChannelConnector;
import org.mortbay.jetty.handler.*;
import org.mortbay.jetty.servlet.ServletHolder;
import org.mortbay.jetty.servlet.ServletHandler;
import org.mortbay.jetty.servlet.Context;
import org.mortbay.cometd.continuation.ContinuationCometdServlet;
import org.mortbay.cometd.continuation.ContinuationClient;
import org.mortbay.cometd.AbstractBayeux;
import org.mortbay.cometd.ClientImpl;
import org.mortbay.cometd.BayeuxService;
import dojox.cometd.Bayeux;
import dojox.cometd.Client;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Test {
public static void main(String[] args) throws Exception {
Server server = new Server();
SelectChannelConnector connector=new SelectChannelConnector();
connector.setPort(8080);
server.addConnector(connector);
Context context = new Context(server,"/");
context.setResourceBase("C:\\Program Files\\Apache Software Foundation\\Tomcat 5.5\\webapps\\test\\");
ContinuationCometdServlet cometdServlet = new ContinuationCometdServlet();
ServletHolder cometdHolder = setupCometdServletHolder(cometdServlet);
context.addServlet(cometdHolder, "/cometd/*");
context.addServlet("org.mortbay.jetty.servlet.DefaultServlet", "/");
server.start();
AbstractBayeux bayeux = cometdServlet.getBayeux();
bayeux.setJSONCommented(true);
new BasicBayeuxService(bayeux);
while (true) {
String input = getKeyboardInput();
java.util.Set ids = bayeux.getClientIDs();
ClientImpl[] clients = new ClientImpl[ids.size()];
int i = 0;
for (String id : ids) {
clients[i] = (ClientImpl) bayeux.getClient(id);
if (clients[i] instanceof ContinuationClient) {
ContinuationClient cc = (ContinuationClient) clients[i];
cc.publish("/service/dev/rfq", "{text:'" + input + "'}", "option msg ID");
}
i++;
}
}
}
private static String getKeyboardInput() {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String text = null;
try {
text = br.readLine();
} catch (IOException ioe) {
System.out.println("IO error trying to read text!");
System.exit(1);
}
System.out.println("Text input:" + text);
return text;
}
private static ServletHolder setupCometdServletHolder(ContinuationCometdServlet cometdServlet)
{
ServletHolder cometdHolder = new ServletHolder(cometdServlet);
cometdHolder.setInitParameter("timeout", "240000");
cometdHolder.setInitParameter("interval", "0");
cometdHolder.setInitParameter("maxInterval", "30000");
cometdHolder.setInitParameter("multiFrameInterval", "1500");
cometdHolder.setInitParameter("JSONCommented", "true");
cometdHolder.setInitParameter("logLevel", "1");
return cometdHolder;
}
public static class BasicBayeuxService extends BayeuxService {
public BasicBayeuxService(Bayeux bayeux) {
super(bayeux, "sendObject");
subscribe("/service/dev/rfq", "sendObject");
}
public Object sendObject(Client client, Object object) {
System.out.println("Sending to client:" + client + " the following object:" + object);
return object;
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment