[작업사항]
1. mysql 트리거 기능을 이용한 멀티모드구현을 포기하고 node.js 채팅방 개념을 빌어서 멀티멀드지원을 시도.
[작업사항 세부 설명]
mysql에 내장되어 있는 trigger기능을 이용하여 외부 php프로그램을 실행시켜 클라이언트들간의 실시간 통신을 구현하려고 했으나 실패하였다. Php에서는 실시간통신이 어렵다는 것을 인지하여 리눅스 커널에서 다중 소켓 프로그래밍을 고려 하였으나 이 역시 제대로 구현할 수 있을까에 대한 의문이 들어서 결국 node.js를 택하게 되었다. Node.js의 실시간 통신을 위해서 아래의 배경지식이 필요하였다.
---------------------------------------------------------------------------------------------------------------------
폴링 : 사용자가 화면을 갱신하지 않더라도 새로운 정보를 사용자에게 알려주기 위해 일정 주기로 서버에 요청을 보내 화면을 일부만 에이잭스로 갱신하는 방식
폴링의 한계(일정 주기 요청)를 극복하기 위해 롱폴링, JSONP 폴링, 스트리밍, 포에버 아이프레임 등의 기술을 합쳐 comet을 이용해 모든 브라우저에서 리얼타임을 구현 -> 리얼타임처럼 보이게 만드는 기술
웹소켓 - 진정한 서버 푸시. 코맷보다 속도가 빠르지만 지원하는 웹브라우저가 일부임.
코맷과 웹소켓을 모두 사용해야 대부분의 웹브라우저에서 리얼타임 웹을 구현할 수 있다. socket.io 가 그러하다.
Socket.io는 JavaScript를 이용하여 브라우저 종류에 상관없이 실시간 웹을 구현할 수 있도록 한 기술이다.
---------------------------------------------------------------------------------------------------------------------
이렇게하여 node.js의 socket.io 모듈을 이용해서 웹브라우저를 통한 간단한 채팅방을 구현해보았다.
단순히 복사/붙여넣기 한 것의 수준이라 세부적인 기능도 구현해야 하고, 무엇보다 안드로이드와의 연동을 위해 지원하는 모듈이 있는지 혹은 다른 방안이 있는 지에 대한 연구가 필요하다. 따라서 node.js에서는 안드로이드 클라이언트들간의 매칭/통신을 위한 서버구현 작업과 android에서는 node.js서버와의 통신을 어떻게 수행할 지에 대한 조사 및 구현이 관건인데 시간이 촉박한 관계로 서적을 천천히 찾아보면서 차근히 프로젝트를 진행하기엔 무리가 있을 것 같고, documents나 필요한 키워드만 서핑하는 위주로 방향을 잡을 것이다.