실제 채팅 응용프로그램을 개발하려면 실시간 데이터 송.수신 시스템을 구축해야한다.


관계형 데이터베이스와 Ajax 호출로는 불가능하다.


이것을 쉽게할 수 있는 것이 바로 WebSocket과 socket.io 라이브러리이다.


채팅 프로그램을 만들기 위해서는 다음과 같은 기술을 알아야한다.


1. WebSocket and Socket.io & Node.js


기존 웹에서는 클라이언트가 서버에 요청을 하고, 서버는 요청된 데이터를 처리해 응답하는 단방향성을 지녔다. 

하지만, 이런 일방적인 형태의 시스템으로는 실시간 채팅 앱 개발이 불가능하다.

실시간 채팅같은 경우에는 서버에 메세지 등 이벤트가 들어왔을 때 바로바로 클라이언트들에게 보내줘야하기 때문이다.


WebSocket는 클라이언트와 서버 간의 양방향 통신을 지원하는 프로토콜이다.

WebSocket에서는 클라이언트가 서버에 데이터를 보내는 것뿐만 아니라

서버도 역시 클라이언트에 데이터 전송 및 알림이 가능하다! 

즉, WebSocket은 두 방향으로 열리는 일종의 통신 파이프라고 할 수 있다.


Socket.io는 WebSocket을 쉽게 사용할 수 있도록 제작된 라이브러리입니다.


Node.js는 서버에서 실행되는 자바 백엔드 기술 언어이다. 

자바스크립트는 이벤트를 사용합니다. node.js는 이러한 특수성을 유지하므로 비동기 코드를 작성하기 쉽습니다.

node.js에는 자체 패키지 관리자 인 npm이 함께 제공됩니다. 패키지를 쉽게 설치, 업데이트, 삭제할 수 있습니다.

이 튜토리얼에서는 express.js를 사용하려고합니다. 그것은 node.js 기반의 마이크로 웹 프레임 워크입니다.


2. 개발 환경 세팅


여기선, node.js가 설치되어있다고 가정한다.

원하는 경로에 폴더를 생성한다. 맥의 경우 터미널에서.


$ mkdir createSimpleApp

$ cd createSimpleApp

$ npm init



Posted by sungho88
,

var express = require('express');

var app = express();

var server = require('http').createServer(app); 

var io = require('socket.io')(server);



app.get('/', function(req, res) {

  res.sendFile(__dirname + '/client.html');

});


////

Express 객체를 갖은 app 변수는 HTTP에서 사용하는 메소드명과 동일한 이름의 메소드를 갖고 있다.

대표적으로 get , post, put 등등 많지만 여기서는  get을 사용할 것이다.


첫 번째 파라미터 : 서버 경로를 가리키는 URI 문자열을 지정

두 번째 파라미터 : 로직을 콜백 함수로 구현. 즉, 설정한 URI 메소드로 요청이 들어오면 이 구현된 함수가 동작하게 된다.

콜백함수는 

 function(req, res) {

  res.sendFile(__dirname + '/client.html');

}

이 부분이다.  분석을 해보자.


첫 번째 파라미터 : 요청(Request)을 위한 객체 req. 클라이언ㅡ의 요청 정보를 담고 있다.

두 번째 파라미터 : 응답(Response)을 위한 객체 res. 클라이언ㅡ의 응답을 위해 생성한 객체이다.




응답

res.send('string문자열'); // 이렇게하면 서버 연결 시, 빈 창에 string문자열만 출력된다.



구현해놓은 HTML 파일을 보여주고 싶다면 어떻게 할까?


res.sendFile()


이렇게하면 client.html파일이 보이게 된다.


__dirname는 경로를 뜻한ㄷ.




Posted by sungho88
,

[개념]


이전의 일반적인 사이트는 단순히 클라이언트의 요청(request)과 서버의 응답(response)로 작동했다.

주소창에 URL주소를 입력하거나, 웹사이트에 들어가 뉴스 링크를 클릭하는 등의 동작으로 Request가 발생하는데 

이 Request가 서버로 전달되면 서버는 Response를 보낸다. 즉, 서버는 클라이언트의 Request가 없으면 데이터를 전송하지 않는다. Request가 클라이언트쪽에서 먼저 시작되고, 그 request에 대한 response만 전달되었다.


웹이 발전하면서 웹소켓(Websocket)이 생겼고, 좀 더 자유롭게 데이터를 주고 받을 수 있게 되었다.

하지만, 지원하지 않는 브라우저가 있을 수 있고, 오래된 버전에서는 사용할 수 없다는 단점이 있다.

이런 단점을 보완하여 브라우저와 상관없이 웹에서 실시간으로 데이터를 처리할 수 있게 해주는 것이 socket.io이다.

TCP 구현보다 비교적 쉽게 구현할 수 있기 때문에 데이터를 처리하기 위해 웹소켓을 많이 사용한다.


socket.io는 다양한 언어를 지원한다. 자바스크립트, 자바, swift, c++

유니티 게임 개발할 때, 사용하기 위해서는 어떻게 할까?



Posted by sungho88
,