⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 simpleechobayeuxclient.java

📁 jetty SERVER連接資料庫用的軟體
💻 JAVA
字号:
package org.mortbay.cometd.client;import java.io.InputStreamReader;import java.io.LineNumberReader;import java.util.Map;import java.util.Timer;import org.mortbay.cometd.AbstractBayeux;import org.mortbay.jetty.client.Address;import org.mortbay.jetty.client.HttpClient;import org.mortbay.thread.QueuedThreadPool;import org.mortbay.util.ajax.JSON;import org.cometd.Bayeux;import org.cometd.Client;import org.cometd.Message;import org.cometd.MessageListener;/** * SimpleEchoBayeuxClient * * A rather silly java client for Bayeux that prints out messages * received on a channel. As the client interactively prompts the * user for input to send on the channel, the effect is to echo * back the messages. */public class SimpleEchoBayeuxClient{    public static long _id = 0;    String _who;    BayeuxClient _client;    Timer _timer;    HttpClient _httpClient;    boolean _connected;        public SimpleEchoBayeuxClient(String host, int port, String uri, String who)    throws Exception    {          _who = who;        if (_who == null)            _who = "anonymous";        _timer = new Timer("SharedBayeuxClientTimer", true);         _httpClient = new HttpClient();         _httpClient.setConnectorType(HttpClient.CONNECTOR_SELECT_CHANNEL);        _httpClient.setMaxConnectionsPerAddress(40000);        QueuedThreadPool pool = new QueuedThreadPool();        pool.setMaxThreads(500);        pool.setDaemon(true);        _httpClient.setThreadPool(pool);        _httpClient.start();        Address address = new Address (host,port);                        _client = new BayeuxClient(_httpClient,address,uri,_timer)        {            public void metaConnect(boolean success,Message message)            {                super.metaConnect(success,message);                                if (success && !_connected)                 {                    System.err.println("Reconnected!");                }                else if (!success && _connected)                {                    System.err.println("Server disconnected");                }                _connected = success;            }            public void metaHandshake(boolean success, boolean reestablish,Message message)            {                super.metaHandshake(success,reestablish,message);                if (success && reestablish)                {                    _client.subscribe("/foo/alpha");                    System.err.println("Resubscribed");                }            }            public void metaPublishFail(Throwable th,Message[] messages)            {                super.metaPublishFail(th,messages);            }          };                _client.addListener (new MessageListener ()        {            public void deliver(Client fromClient, Client toClient, Message msg)            {                if (msg == null)                    return;                if ("/foo/alpha".equals(msg.getChannel()))                {                      Object data=(Object)msg.get(AbstractBayeux.DATA_FIELD);                    String user = "unknown";                    if (data!=null)                    {                        user = (String)((Map)data).get("user");                        String chat = (String)((Map)data).get("chat");                        if (user == null)                             user = "unknown";                        if (user.equals(_who))                            user = "I";                        System.err.println("\n\t"+user+" said: "+chat);                    }                }            }        });                         }        public void start () throws Exception    {        _client.start();         _client.subscribe("/foo/alpha");         Object msg=new JSON.Literal("{\"user\":\""+_who+"\",\"chat\":\"Has joined\"}");        _client.publish("/foo/alpha", msg, String.valueOf(_id++));        _connected = true;    }        public void stop () throws Exception    {         _client.stop();        _connected = false;    }        public void publish (String say)    {        Object msg=new JSON.Literal("{\"user\":\""+_who+"\",\"chat\":\""+say+"\"}");        _client.publish("/foo/alpha", msg, String.valueOf(_id++));    }            public static final void main(String[] args)    {        try        {            //arg0: server url            String serverCometdUrl = (args.length > 0? args[0] : "/cometd/cometd");                        //arg1: server port            int serverPort = (args.length >= 2 ? Integer.valueOf(args[1]).intValue() : 8080);                        //arg2: username (not necessary)            String user = (args.length >= 3 ? args[2] : "anonymous");                        SimpleEchoBayeuxClient sbc = new SimpleEchoBayeuxClient("localhost", serverPort, serverCometdUrl, user);            sbc.start();            LineNumberReader in = new LineNumberReader(new InputStreamReader(System.in));            while (true)            {                try                {                    System.err.print("Enter something to say > ");                    String say = in.readLine().trim();                    /*                     * Only here for testing                     */                    if (say.equalsIgnoreCase("stop"))                        sbc.stop();                    else if (say.equalsIgnoreCase("start"))                        sbc.start();                    else                        sbc.publish (say);                }                catch (Exception e)                {                    e.printStackTrace();                }            }                    }        catch (Exception e)        {            e.printStackTrace();        }    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -