반응형
저번에 XMPPConnection를 상속받아서 GoogleTalkConnection을 만들어보왔는데 그모든기능을 하나의 객체안에서 쓰기 편하게 하기 위해서 GoogleTalkClient를 제작을 해보았다. 코드는 아직 초보라서 잘하지는 못했지만 간단한 기능은 제공한다고 생각해서 올려본다.
* GoogleTalkConnection 소스를 보실려면 여기 ▶ XMPPConnection 소스보기
* GoogleTalkConnection 소스를 보실려면 여기 ▶ XMPPConnection 소스보기
001 |
import org.jivesoftware.smack.*; |
002 |
import org.jivesoftware.smack.filter.PacketFilter; |
003 |
|
004 |
/** |
005 |
* @author GoogleTalk Client 프로그램으로서 XMPP통신으로 채팅을 지원하는 객체 |
006 |
* smack.jar 파일이 잇어야함! |
007 |
* has-a : GoogleTalkConnection, MessageListener; |
008 |
* |
009 |
*/ |
010 |
public class GoogleTalkClient { |
011 |
|
012 |
private final GoogleTalkConnection connection; |
013 |
private final String username; |
014 |
private final String password; |
015 |
private String recipientsName; |
016 |
private MessageListener listener = null ; |
017 |
|
018 |
/** |
019 |
* GoogleTalkClient 생성자! |
020 |
* @param username 접속자의 Gmail 주소 입니다. |
021 |
* @param password Gmail의 비밀번호 입니다. |
022 |
* @throws XMPPException 접속과 로그인에서의 예외처리입니다. |
023 |
*/ |
024 |
public GoogleTalkClient(String username, String password) throws XMPPException { |
025 |
connection = new GoogleTalkConnection(); |
026 |
connection.login(username, password); |
027 |
this .username = username; |
028 |
this .password = password; |
029 |
} |
030 |
|
031 |
/** |
032 |
* public void open() throws XMPPException { |
033 |
* |
034 |
* XMPPConnection 의 접속및 로그인을 합니다. |
035 |
* @throws XMPPException |
036 |
*/ |
037 |
public void open() throws XMPPException { |
038 |
if (isConnected()) { |
039 |
connection.connect(); |
040 |
connection.login(username, password); |
041 |
} |
042 |
} |
043 |
|
044 |
/** |
045 |
* public void close(){ |
046 |
* |
047 |
* 커넥션 접속 해제를 합니다. |
048 |
*/ |
049 |
public void close() { |
050 |
if (!isConnected()){ |
051 |
connection.disconnect(); |
052 |
} |
053 |
} |
054 |
|
055 |
/** |
056 |
* public boolean isConnected() |
057 |
* |
058 |
* 커넥션의 접속된 정보를 표현합니다. |
059 |
* @return 커넥션접속정보! |
060 |
*/ |
061 |
public boolean isConnected() { |
062 |
return connection.isConnected(); |
063 |
} |
064 |
|
065 |
/** |
066 |
* public void addMessageListener(MessageListener listener) |
067 |
* |
068 |
* 상대방의 보낸메세지를 담당하는 MessageLisener 추가 메서드 |
069 |
* @param listener MessageListener |
070 |
*/ |
071 |
public void addMessageListener(MessageListener listener) { |
072 |
this .listener = listener; |
073 |
} |
074 |
|
075 |
/** |
076 |
* public void addWriterListener(PackteListener listener) |
077 |
* |
078 |
* 내가 보낸메세지를 담당하는 추가메서드 |
079 |
* @param listener PacketListener |
080 |
*/ |
081 |
public void addWriterListener(PacketListener listener) { |
082 |
addWriterListener(listener, null ); |
083 |
} |
084 |
|
085 |
/** |
086 |
* public void addWriterListener(PacketListener listener, PacketFilter filter) { |
087 |
* |
088 |
* 내가 보낸메세지를 담당하는 추가메서드 |
089 |
* @param listener PacketListener |
090 |
* @param filter PacketFilter |
091 |
*/ |
092 |
public void addWriterListener(PacketListener listener, PacketFilter filter) { |
093 |
connection.addPacketWriterListener(listener, filter); |
094 |
} |
095 |
|
096 |
/** |
097 |
* public String getUserName(){ |
098 |
* |
099 |
* 사용자의 gmail 주소를 리턴합니다. |
100 |
* @return 사용자의 gmail 주소 |
101 |
*/ |
102 |
public String getUserName() { |
103 |
return username; |
104 |
} |
105 |
|
106 |
/** |
107 |
* public String getPassWord(){ |
108 |
* |
109 |
* 사용자의 비밀번호를 리턴합니다. |
110 |
* @return 사용자의 비밀번호 리턴 |
111 |
*/ |
112 |
public String getPassWord(){ |
113 |
return password; |
114 |
} |
115 |
|
116 |
/** |
117 |
* public void setRecipientsName(String name) { |
118 |
* |
119 |
* 받는사람의 Gmail 주소를 등록한다. |
120 |
* @param 받는사람 |
121 |
*/ |
122 |
public void setRecipientsName(String name) { |
123 |
this .recipientsName = name; |
124 |
} |
125 |
|
126 |
/** |
127 |
* public String getRecipientsName(){ |
128 |
* |
129 |
* 받는사람의 Gmail 주소를 리턴합니다. |
130 |
* @return 받는사람 |
131 |
*/ |
132 |
public String getRecipientsName() { |
133 |
return recipientsName; |
134 |
} |
135 |
|
136 |
/** |
137 |
* public void sendMessage(String message) throws XMPPException { |
138 |
* |
139 |
* setRecipientsName을 통해 미리 등록이 되있어야만 쪽지를 보낼수있다. |
140 |
* @param message 보낼 쪽지를 의미 합니다. |
141 |
* @throws XMPPException |
142 |
*/ |
143 |
public void sendMessage(String message) throws XMPPException { |
144 |
sendMessage(recipientsName, message); |
145 |
} |
146 |
|
147 |
/** |
148 |
* public void sendMessage(String to, String message) throws XMPPException { |
149 |
* |
150 |
* 상대방에게 메세지를 보냅니다. |
151 |
* |
152 |
* @param to 상대방의 Gmail 아이디 입니다. |
153 |
* @param message 상대방에게 보낼 메세지입니다. |
154 |
* @throws XMPPException XMPPException입니다. |
155 |
*/ |
156 |
public void sendMessage(String to, String message) throws XMPPException { |
157 |
Chat chat = connection.getChatManager().createChat(to, this .listener); |
158 |
chat.sendMessage(message); |
159 |
} |