XMPP Server용 XMPP Client 만들기
Openfire의 하위 프로젝트인 Smack ( Client Library) 를 사용하여, 간단한 프로그램을
빌드 할 수 있다.
예를들어 Openfire서버가 설치된 장비의 Stress Test용도의 클라이언트가 필요하다면
이럴때 사용하면 좋을 것도 같다.
Openfire Projects ( ignite realtime ) : http://www.igniterealtime.org/projects/index.jsp
Smack 라이브러리를 다운로드 해서 프로젝트에 추가하는 방안도 있지만,
프로젝트 자체를 Maven Project를 생성을 하고 나서, pom.xml에 아래 내용을
채워 주면 자동으로 Library들이 포함되는 방법이 더 좋을 듯 하다.
org.igniterealtime.smack smack-java7 4.1.6 org.igniterealtime.smack smack-tcp 4.1.6 org.igniterealtime.smack smack-im 4.1.6 org.igniterealtime.smack smack-extensions 4.1.6
package smackMavenClient; import java.io.IOException; import java.util.Collection; import org.jivesoftware.smack.AbstractXMPPConnection; import org.jivesoftware.smack.SmackException; import org.jivesoftware.smack.SmackException.NotConnectedException; import org.jivesoftware.smack.XMPPException; import org.jivesoftware.smack.chat.Chat; import org.jivesoftware.smack.chat.ChatManager; import org.jivesoftware.smack.chat.ChatMessageListener; import org.jivesoftware.smack.packet.Message; import org.jivesoftware.smack.roster.Roster; import org.jivesoftware.smack.roster.RosterEntry; import org.jivesoftware.smack.tcp.XMPPTCPConnection; import org.jivesoftware.smack.tcp.XMPPTCPConnectionConfiguration; public class smClient implements ChatMessageListener { private AbstractXMPPConnection conn2 ; private static smClient c ; public void login(String userName, String password ) throws SmackException, IOException, XMPPException { XMPPTCPConnectionConfiguration config = XMPPTCPConnectionConfiguration.builder() .setUsernameAndPassword(userName, password) .setServiceName("localhost") .setHost("localhost") .setPort(5222) .build(); conn2 = new XMPPTCPConnection(config); conn2.connect(); } public static void main(String[] args) throws SmackException, IOException, XMPPException { c = new smClient(); c.login("아이디", "비번"); c.sendMessage("보내고 싶은 메시지", "친구아이디"); c.getFriends(); } public void sendMessage(String message, String to) throws NotConnectedException { ChatManager cm = ChatManager.getInstanceFor(conn2); Chat newChat = cm.createChat(to); newChat.addMessageListener( this); newChat.sendMessage(message); } public void getFriends() { Roster r = Roster.getInstanceFor(conn2); Collectionentries = r.getEntries(); for ( RosterEntry entry : entries ) { System.out.println( entry.toString() ); } c.disconnect(); } public void disconnect() { conn2.disconnect(); } public void processMessage(Chat chat, Message message) { if ( message.getType().equals("chat")) { System.out.println("Received message: " + message.getBody() ); } } }
샘플 예제가 있는 웹페이지
https://namalfernando.wordpress.com/2015/12/18/write-xmpp-client-using-smack-api/
* XMPP client로 공개된 소스들에 대한 비교표
https://en.wikipedia.org/wiki/Comparison_of_XMPP_clients
designation | Operating system | File transfer (XEP-0096) | Jingle | MUC | GPG |
---|---|---|---|---|---|
ChatSecure | Android / Apple iOS | Yes | per Plugin | Yes | No |
Conversations | Android | Yes | Yes | Yes | Yes |
CoyIM | Mac OS X, Linux,Windows | ||||
Coccinella | Cross-platform | Yes | Yes | Yes | No |
Gajim | BSD/Linux/Windows | Yes | Yes | Yes | Yes[Note 1] |
Jeti/2 | Cross-platform(Java) | Yes | Voice Beta | Yes | Yes |
Jitsi | Cross-platform(Java) | Yes | Yes | Yes | No |
MCabber | Linux, Mac OS X,BSD | No | No | Yes | Yes |
Pidgin | Mac OS X, Linux,Windows | Yes | Yes | Yes | per Plugin |
Psi | eCS/Linux/Mac OS X/Solaris/Windows | Yes | Yes | Yes | Yes |
Tkabber | Cross-platform | Yes | No | Yes | Yes |
- ^ since Version 0.15 on Windows
'Web Tech. > Openfire' 카테고리의 다른 글
(6) AndroidStudio에서 Smack4.1 사용하기 (0) | 2016.06.24 |
---|---|
(2.2) 외부 Database 연동 (0) | 2016.06.16 |
(2.1) 외부 Database 연동 (0) | 2016.06.16 |
(4) Openfire(메신저 서버 ) - eclipse(이클립스)에서 빌드하기 (8) | 2016.06.15 |
(3) Spark (메신저 클라이언트) - 스킨 변경 (3) | 2016.06.15 |