📄 chatlistener.java
字号:
//package voicexml_im;import com.echomine.jabber.*;import java.io.BufferedReader;import java.io.PrintWriter;import java.io.InputStreamReader;import java.util.HashMap;import java.util.StringTokenizer;import java.util.Enumeration;import java.util.Hashtable;import java.util.List;import java.util.Vector;import javax.servlet.http.*;import javax.servlet.*;public class ChatListener implements JabberMessageListener { private JabberContext jabberContext; private Jabber jabber; private JabberSession jabberSession; private JabberRosterService roster; private JabberPresenceService presence; private JabberChatService chatService; private JabberClientService clientService; private JabberMessageParser messageParser; private JabberUserService userService; private JabberServerService serverService; private JabberMessageHandler messageHandler; private Hashtable allOnlineBuddies = new Hashtable(); private Hashtable allOnlineBuddiesStates = new Hashtable(); private int counter = 0; private PrintWriter pw; private final String JABBER_SERVER = "borderlinenormal.com"; private final String AIM_GATEWAY = "aim.chote.com"; private final String MSN_GATEWAY = "msn.chote.com"; private final int JABBER_SERVER_PORT = 5222; private String from; private BufferedReader in; private String userName, password; private HashMap map = new HashMap(); private Vector allChatMsgs = new Vector(); private Hashtable allMsgs = new Hashtable(); private HttpSession currentSession; private HttpServletRequest request; private HttpServletResponse response; private Vector rosterVector = new Vector(); public ChatListener(HttpServletRequest req, HttpServletResponse res) { request = req; response = res; userName = request.getParameter("userName"); StringTokenizer tokenizer = new StringTokenizer(request.getParameter( "passWord"), " "); password = tokenizer.nextToken(); } private void displayMainMenu() { System.out.println("\n\n*************STONE AGE CHAT**************"); System.out.println("***************MAIN MENU*****************"); System.out.println("1. Register an account with Jabber"); System.out.println("2. Log in!"); System.out.println("H. Help/Program Description!"); System.out.println("Q. Quit!"); System.out.println("*****************************************"); } private void start() { try { String cmd; displayMainMenu(); cmd = in.readLine(); if (cmd.equals("1")) registerAccount(); else if (cmd.equals("2")) login(); else if (cmd.equals("H")) displayProgramInfo(); else System.exit(0); } catch (Exception e) { e.printStackTrace(); } } private void registerAccount() { try { String rePassword; do { System.out.print("Desired Jabber Username: "); userName = in.readLine(); System.out.print( "Desired Jabber Password (Remember password will echo back :) : "); password = in.readLine(); System.out.print( "Reenter Desired Jabber Password (Remember password will echo back :) : "); rePassword = in.readLine(); } while (userName.hashCode() == 0 || password.hashCode() == 0 || rePassword.hashCode() == 0 || userName == null || password == null || rePassword == null || !rePassword.equals(password)); jabberContext = new JabberContext(userName, password, JABBER_SERVER); jabber = new Jabber(); jabberSession = jabber.createSession(jabberContext); jabberSession.connect(JABBER_SERVER, JABBER_SERVER_PORT); map.put("username", userName); map.put("password", password); jabberSession.getUserService().register(JABBER_SERVER, map); jabberSession.getUserService().login(); serverService = jabberSession.getServerService(); List agents = serverService.getAgents(); roster = jabberSession.getRosterService(); presence = jabberSession.getPresenceService(); chatService = jabberSession.getChatService(); messageParser = jabberSession.getMessageParser(); userService = jabberSession.getUserService(); clientService = jabberSession.getClientService();// presence.setToAvailable(null, null, false); for (int i = 0; i < agents.size(); i++) { Agent jid = (Agent) agents.get(i);// System.out.println(jid.getTransport()+" "+jid.getService()); if (jid.getService().equals("aim")) { map = jabberSession.getUserService().getRegisterFields(jid.getJID()); System.out.print("\nAdding your regular AIM account...Enter n if dont want to add, otherwise press anything: "); String answer = in.readLine(); if (answer.equals("n") || answer.equals("N")) { System.out.println("Skipping"); continue; } String aimUser, aimPassword; do { System.out.print("Enter AIM UserName (eg: tonyblair) : "); aimUser = in.readLine(); System.out.print( "Enter AIM Password (Remember password will echo back :) : "); aimPassword = in.readLine(); System.out.print( "Reenter AIM Password (Remember password will echo back :) : "); rePassword = in.readLine(); } while (aimUser.hashCode() == 0 || aimPassword.hashCode() == 0 || rePassword.hashCode() == 0 || aimUser == null || aimPassword == null || rePassword == null || !rePassword.equals(aimPassword)); map.put("username", aimUser); map.put("password", aimPassword); jabberSession.getUserService().register(jid.getJID(), map); } if (jid.getService().equals("msn")) { map = jabberSession.getUserService().getRegisterFields(jid.getJID()); System.out.print("\nAdding your regular MSN account...Enter n if dont want to add, otherwise press anything: "); String answer = in.readLine(); if (answer.equals("n") || answer.equals("N")) { System.out.println("Skipping"); continue; } String msnUser, msnPassword; do { do { System.out.print( "Enter MSN UserName (eg: georgebush@hotmail.com) : "); msnUser = in.readLine(); } while (msnUser.indexOf("@") == -1); System.out.print( "Enter MSN Password (Remember password will echo back :) : "); msnPassword = in.readLine(); System.out.print( "Reenter MSN Password (Remember password will echo back :) : "); rePassword = in.readLine(); } while (msnUser.hashCode() == 0 || msnPassword.hashCode() == 0 || rePassword.hashCode() == 0 || msnUser == null || msnPassword == null || rePassword == null || !rePassword.equals(msnPassword)); map.put("username", msnUser); map.put("password", msnPassword); jabberSession.getUserService().register(jid.getJID(), map); } } System.out.println("\n\nPlease wait..."); jabberSession.addMessageListener(this); jabberSession.getPresenceService().setToAvailable("chat", "Online", false); roster.requestRosterList(false); CommandListener cmdListener = new CommandListener(); Thread thrd = new Thread(cmdListener); thrd.start(); } catch (Exception e) { try { map = jabberSession.getUserService().getRegisterFields(JABBER_SERVER); //System.out.println(map.get("key")); jabberSession.getUserService().removeRegisterService(JABBER_SERVER, (String) map.get("key")); e.printStackTrace(); System.exit(1); } catch (Exception e2) { e2.printStackTrace(); System.exit(1); } } } public void login() { try { System.out.println("Logging into your account..."); jabberContext = new JabberContext(userName, password, JABBER_SERVER); jabber = new Jabber(); jabberSession = jabber.createSession(jabberContext); jabberSession.connect(JABBER_SERVER, JABBER_SERVER_PORT); jabberSession.getUserService().login(); serverService = jabberSession.getServerService(); roster = jabberSession.getRosterService(); presence = jabberSession.getPresenceService(); chatService = jabberSession.getChatService(); messageParser = jabberSession.getMessageParser(); userService = jabberSession.getUserService(); clientService = jabberSession.getClientService(); System.out.println("\n\nPlease wait...\n"); jabberSession.addMessageListener(this); jabberSession.getPresenceService().setToAvailable("chat", "Online", false); roster.requestRosterList(false); //CommandListener cmdListener = new CommandListener(); //Thread thrd = new Thread(cmdListener); // thrd.start(); } catch (Exception e) { System.out.println("\n\nWrong password/username! Run again!\n"); //e.printStackTrace(); System.exit(1); } } public Vector getVector() { return rosterVector; } public Hashtable getAllOnlineBuddies() { return allOnlineBuddies; } //public String getRoster(){ // String voicexmlString=""; //voicexmlString.concat("<?xml version = \"1.0\"?>"+ // "<vxml version = \"2.0\">"+ // "<form> <block>"); // for(int i=0; i<rosterVector.size(); i++){ // voicexmlString.concat("<prompt>"); // voicexmlString.concat((String)rosterVector.elementAt(i)); // voicexmlString.concat("welcome"); // voicexmlString.concat("<break size = \"small\" />"); // voicexmlString.concat("</prompt>"); // System.out.println((String)rosterVector.elementAt(i)); // } // System.out.println(rosterVector); // return "<prompt>welcome</prompt>"; //} public void messageReceived(JabberMessageEvent msg) { //System.out.println(msg.getMessage()); try {// if(msg.getMessageType()==JabberCode.MSG_// System.out.println("Rev= "+msg.getMessage()); if (msg.getMessageType() == JabberCode.MSG_PRESENCE) { JabberPresenceMessage presMsg = (JabberPresenceMessage) msg.getMessage(); //jabberSession.getPresenceService().sendSubscribed(presMsg.getFrom()); //jabberSession.getPresenceService().subscribe(presMsg.getFrom()); if (presMsg.getType().equals("subscribe")) { jabberSession.getPresenceService().acceptSubscribe(presMsg); } // System.out.println(presMsg.getFrom()+", "+presMsg.getShowState()+", "+presMsg.getStatus()+", "+presMsg.getType()); if (presMsg.getType().equals("available")) { System.out.println("\n\n**** " + presMsg.getFrom() + " just came online!, ID assigned=" + counter + "\n"); allOnlineBuddies.put(presMsg.getFrom(), new Integer(counter++)); allOnlineBuddiesStates.put(presMsg.getFrom(), presMsg.getStatus()); // rosterVector.add(presMsg.getFrom()); } if (presMsg.getType().equals("unavailable")) { System.out.println("\n\n**** " + presMsg.getFrom() + " just went offline! **********"); allOnlineBuddies.remove(presMsg.getFrom()); allOnlineBuddiesStates.remove(presMsg.getFrom()); // rosterVector.remove(presMsg.getFrom()); }// refreshOnlineList(); } if (msg.getMessageType() == JabberCode.MSG_CHAT) { receivedChatMsg(msg); } // else // System.out.println("Recv: "+msg); } catch (Exception e) { e.printStackTrace(); } } public Hashtable getMsgVector() { return allMsgs; } public void setMsgVector(Hashtable h) { allMsgs = h; } public void setSaid(JabberChatMessage chatMsg) { allMsgs.put(chatMsg, new String("said")); } private void receivedChatMsg(JabberMessageEvent msg) { JabberChatMessage chatMsg = (JabberChatMessage) msg.getMessage(); if (chatMsg.getType().equals(JabberChatMessage.TYPE_HEADLINE)) { System.out.println(" HEADLINE MESG RECV: ---> " + chatMsg.getFrom() + " says: \"" + chatMsg.getBody() + "\"\n"); } if (allOnlineBuddies.containsKey(chatMsg.getFrom())) { System.out.println(" MESG RECV: ---> FROM: " + chatMsg.getFrom() + " ID=" + ( (Integer) allOnlineBuddies.get(chatMsg.getFrom())). intValue() + " says: \n \"" + chatMsg.getBody() + "\""); allMsgs.put(chatMsg, new String("not said")); allChatMsgs.add(" MESG RECV: ---> FROM: " + chatMsg.getFrom() + " ID=" + ( (Integer) allOnlineBuddies.get(chatMsg.getFrom())). intValue() + " says: \n \"" + chatMsg.getBody() + "\""); } }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -