XMPP는 Extensible Messaging and Presence Protocol의 약자로 XML 기반의 메시지 프로토콜이다. 원래 이름은 Jabber 였으며 IETF의 개방형 표준이다. websocket 과 같은 전송 계층에 XMPP와 같은 메시지 프로토콜을 올려서 웹 채팅 클라이언트를 만들 수 있다.
websocket 에 XMPP를 전송하기 위한 방법은 XMPP 서버가 websocket을 지원하거나, websocket 을 처리해주는 gateway를 두면 된다. 이번 포스팅에서는 openfire의 xmpp 서버를 이용해서 websocket에서 XMPP를 이용하여 웹 채팅 클라이언트를 만드는 방법을 설명하겠다. 참고로 xmpp.org 에서는 이용 가능한 서버, 클라이언트, 라이브러리를 조회할 수 있다.
1. ubuntu server에서 OpenFire 설치
- 다음과 같이 java를 설치한다.
sudo apt-get install openjdk-7-jdk
- http://www.igniterealtime.org/downloads/index.jsp 에서 Linux 용 package를 다운로드 한다. 다음에서 debian package를 다운로드 한다.
- debian package를 다음과 같이 설치한다.
sudo dpkg -i openfire_3.9.3_all.deb
- 웹 브라우저를 열어서 http://해당서버버의 IP:9090 로 접속하면 setup wizard를 볼 수 있다. Domain에 해당 서버의 도메인 네임이나 IP를 설정한다.
- admin 으로 로그인하고 시험할 user를 생성한다.
- websocket plugin 을 설치한다. openfire websocket plugin은 https://code.google.com/p/openfire-websockets/ 에서 다운로드 가능하다. 다운로드 하고 압축을 풀면 websockets.war가 보이는데 이를 openfire의 admin 페이지의 plugin 에서 upload plugin 을 이용하여 war파일을 업로드 한다. 업로드하면 다음과 같은 화면이 보인다.
업르도하고 나서 openfire 를 재기동 해준다.
sudo /etc/init.d/openfire stop
sudo /etc/init.d/openfire start
2. xmpp client 설치
- xmpp client를 설치한다. 이번 포스팅에서는 spark 를 이용한다. (http://www.igniterealtime.org/downloads/index.jsp에서 다운로드) 다운로드하고 설치하여 상기에서 생성한 user로 로그인 한다.
- 로그인 하면 다음과 같이 서버에 세션이 생성된다.
3. Client Web 지원을 위한 NGINX 설치
- Client에 제공하기 위한 웹 서버를 설치한다.
sudo apt-get install nginx