Created
July 21, 2009 14:22
-
-
Save mnutt/151353 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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