SlideShare a Scribd company logo
1 of 44
웹소켓과 온라인 게임
Web Socket, JavaScript, Node.js, and Online Game.




                                                     아꿈사
                                http://cafe.naver.com/architect1


                                                      최성기
                                           florist.sk@gmail.com
Note. 웹 실무자가 아닌 어느 개발자의
               자료조사 내용 정리 정도로 봐주세요.




             자바스크립트        JavaScript



웹소켓
Web Socket


             온라인 게임      Online Game
자바스크립트     JavaScript



웹소켓
Web Socket


             온라인 게임   Online Game
웹 소켓에 대해서는 지난 번에
열심히 떠들어 놓은 자료가 존재.
오늘은 PT 1장만 할애.
세 가지만 정리하고 넘어가자.


                     http://www.slideshare.net/hiscale/111015-html5-1




1. http 실시간 통신에 쓰일 차세대 기술.
2. 불가능 -> 가능 (X), 복잡함 -> 심플함 (O)
3. 이걸 온라인 게임에 써먹어 볼 수는 없을까?
자바스크립트     JavaScript



웹소켓
Web Socket


             온라인 게임   Online Game
자바스크립트의 시작은 웹브라우저에 기생(?)하면서
마우스 커서에 곰돌이 인형 따위를 따라다니게 만들어주는
싸구려 이미지(...) 였지만

              마우스 커서를 꾸며보아요
              화면에 눈이 내리게 해주는 효과
              철수와 영희 만난 지 600일째 되는 날
              홈페이지에 현재시간 출력하기
              해가 지면 배경색이 어두워져요!
              링크 텍스트에 무지개 효과 넣기

              …그 외 유치한 효과 다수.
http://www.slideshare.net/rhio.kim/track1-2-role-java-script
지금은 아무도
JavaScript를 무시할 수 없다.
               JSON
               AJAX
               d3.js
               Node.js
               JQuery
               Mobile App.
               WebGL
               Web Socket

               …그 외 놀라운 기능 다수.
심지어 이제는
게임 개발자의 밥줄마저 위협(?) 하는 존재가 되었다.
얼마 전 H3의 자료를 보니
자바스크립트의 변화된 입지에 대해 잘 설명된 자료가 있음.




         http://www.slideshare.net/rhio.kim/track1-2-role-java-script


JS를 이용해 웹 Front-end 개발은
이전에 비할 바 없는 풍성한 표현력을 갖게 되었고
3D Graphics 표현도 가능해 졌으며
이제는 Back-end, 즉 서버 어플리케이션도 개발할 수 있게 되었다.
자바스크립트     JavaScript



웹소켓
Web Socket


             온라인 게임   Online Game
자바스크립트로 쏟아져 나오는
다양한 분야 / 갖가지 기능의 프레임워크가 존재

Node.js는 그 중에서
서버 사이드 애플리케이션 제작을 위한
프레임워크 중 하나.

Ryan Dahl이라는 양반이 2009년 말에 발표.




http://www.slideshare.net/rockdoli/nodejs-8492796
웹 브라우저별 JavaScript 엔진

  파이어폭스            :   SpiderMonkey
  크롬               :   V8
  사파리              :   JavaScriptCore
  IE9              :   Chakra
  오페라              :   Carakan

V8은 구글 크롬에 탑재된
C++로 제작된 JS 엔진.
오픈소스로 공개되어 있다.
http://code.google.com/p/v8/


Node.js가 가져다 쓴 엔진.
Node.js는 자바스크립트로 몇 줄만 적으면

웹서버가 되기도 하고
var http=require('http');
http.createServer(function(req,res){
  res.writeHead(200,{'Content-Type':'text/plain'});
  res.end('Hello Worldn');
}).listen(1337,"127.0.0.1");
console.log('Server running at http://127.0.0.1:1337/');



TCP 서버가 되기도 하는 물건이다.
var net=require('net');
var server=net.createServer(function(socket){
  socket.write("Echo serverrn");
  socket.pipe(socket);
});
server.listen(1337,"127.0.0.1");
물론 간단히 웹소켓 서버가 될 수도 있다.
  var io = require('socket.io').listen(80);

  io.sockets.on('connection', function (socket) {
    socket.emit('news', { hello: 'world' });
    socket.on('my other event', function (data) {
      console.log(data);
    });
  });


Non-blocking IO 방식 인터페이스를 제공하는
싱글스레드 개발환경

여러 프로세스를 띄우고 클러스터 구성하면
같은 포트를 공유하게 할 수도 있음.
http://nodejs.org/docs/v0.6.0/api/cluster.html
2009년 11월 8일 JSConf.eu 2009 행사에서 발표 후
아직은 그리 넓게 알려지진 않았으나 꾸준히 상승세.
http://www.slideshare.net/rhio.kim/track1-2-role-java-script     http://www.slideshare.net/rockdoli/nodejs-8492796




                                     http://goo.gl/1qECP       http://doortts.tistory.com/category/node.js%20따라배우기
요약해 보면 Node.js는
 V8 위에서 돌아가는 자바스크립트 런타임인데,
 만들기 쉽고 확장하기 쉬운 네트워크 프로그램 개발환경



v0.5x 버전부터 윈도우 버전은 IOCP를 사용,
성능이 대폭 향상

윈도우 설치방법을
블로그에 정리해 두었습니다.
http://devnote.tistory.com/213




                                 http://nodejs.org/codeconf.pdf
공식 홈페이지에는
Node.js를 적용한 기업들의 코멘트가 있고,




얼마전 KTH의 컨퍼런스 H3의 웹페이지 구축에도 쓰였음
이 물건을 온라인 게임에 써먹어 볼 수는 없을까?
자바스크립트      JavaScript



웹소켓
Web Socket


             온라인 게임    Online Game
                이후부터 내용이 상당히 주관적임.
1. 일단 서버를 Node.js로 만드는 걸 생각할 수 있겠지만




                              이 팀은 서버도
                         JavaScript로 만드는 걸까?


 이제 막 2년된 v0.6의 물건을 베이스로
 게임서버를 짠다는 건 무척 실험적인 선택.

 본인이 사장님이나 PD가 아니고서는... 매우 힘든 결정일 듯.
Node.js가 웹 개발자들에게 주는 의미:

Front-end 개발과 Back-end 개발을
하나의 통일된 언어로 개발할 수 있게 해주는 환경.




        http://www.slideshare.net/rhio.kim/track1-2-role-java-script
Node.js가
게임 서버 개발자에게 주는 의미는..?

     하나의 프로세스에서
     TCP 소켓도 처리할 수 있고,
     웹 소켓도 처리할 수 있는 물건.
           ...이라고 저 혼자 생각해 봤습니다;
보통은 자체 게임 클라이언트가 서버에 접속해서
게임을 플레이 하는 식이고
게임 웹사이트에서 게임의 일부 정보들을 열람한다.
캐릭터 정보, 경매장 상황, 친구 리스트, 길드 정보 등.
웹서버에 정보를 연동할 때는 보통 DB를 거친다.
게임서버와 웹서버가 직접 연결되긴 좀 불편하고 귀찮아..
웹은 주로 정보를 읽기(read)만 한다.
        gpg study 포럼의 7년전 스레드 ‘웹서버로 요청 보내서 결과 받아오기’ 참고.
                   http://www.gpgstudy.com/forum/viewtopic.php?t=3955
웹에서의 게임 정보 연동은
좀 불편하고 귀찮아서 그렇지
어느 정도 수준까지는
지금의 기술들로도 다 할 수 있는 작업.

브라우저에서 게임의 캐릭터를 볼 수도 있고
게임에 접속중인 친구와 채팅을 할 수도 있다.

커뮤니티 활성화가 중요한 온라인게임은
웹 브라우저 사용이 활발해짐에 따라
웹 접근성도 중요한 서비스 고려사항이다.
게임 클라이언트만 우선 빼고
                            다이어그램을 일렬로 폈습니다.




웹서버에서는 주로 게임 데이터를 읽기만 하고
연동 작업이 복잡하기도 해서 DB를 거쳐서 연결되는 구성을 했는데

웹 브라우저가 데이터 읽기 이상의 인터랙션을 하고 싶다면,
웹소켓          TCP소켓




중간에 Node.js 를 미들웨어로 쓰면 어떨까?
웹소켓          TCP소켓

           웹소켓




그러면 유저의 웹 브라우저와도 Node.js를 거쳐
게임서버가 바로 통신할 수도 있게 되고
웹소켓       TCP소켓



        웹소켓         TCP소켓




여기에 게임 클라이언트가 TCP로 붙으면
웹 브라우저와 바로 연결돼 채팅을 할 수도 있겠지.
ODBC 애드온

              웹소켓              TCP소켓



              웹소켓               TCP소켓




Node.js는 C/C++로 애드온을 만들어 붙일 수도 있으니
많이 쓰이는 MS-SQL과 연동하는 ODBC 모듈을 직접 짤 수도 있고
혹시 MongoDB같은 NOSQL을 쓴다면 바로 연결될 수도 있다.
결국은 처음에 그렸던 전형적인 온라인 게임 서비스의 구성에서
ODBC 애드온

            웹소켓              TCP소켓



            웹소켓               TCP소켓




모든 구성요소와 통신할 수 있는 위치의 미들웨어를
Node.js로 구축할 수 있다는 말이 된다.
ODBC 애드온

            웹소켓              TCP소켓



                              TCP소켓
         웹소켓?




지금 당장을 보고 하는 이야기는 아니지만..
유저가 웹소켓을 지원하지 않는 브라우저를 사용해 불안하더라도
ODBC 애드온

                   웹소켓              TCP소켓



                                     TCP소켓
            웹소켓
             or
            AJAX




Node.js는 XmlHttpRequest를 이용한 AJAX 통신도 처리할 수 있다.
부정적인 의견이 몇 가지 예상 되는데,


1. 굳이 Node.js가 아니어도 다 할 수 있는 일이다.
2. 그런 미들웨어 없이도 잘 살아왔는데 뭐 하러 붙이는가?
3. Node.js가 중요한 서비스를 구축할 만큼 신뢰할 물건인가?
부정적인 의견이 몇 가지 예상 되는데,


1. 굳이 Node.js가 아니어도 다 할 수 있는 일이다.
2. 그런 미들웨어 없이도 잘 살아왔는데 뭐 하러 붙이는가?
3. Node.js가 중요한 서비스를 구축할 만큼 신뢰할 물건인가?

 맞다.
 AJAX vs 웹소켓 의 경우와 비슷한데,
 불가능 -> 가능이 아니라 복잡함 -> 단순함의 변화다.

 전보다 더욱 쉽고 간단하고 빠르게 개발할 수 있는 환경을 얻는 것이다.
 쉽고 빠르다는 것은 생산성이 높아지고 유지/보수가 쉬워진다는 말이다.
 (그래도 디버깅 환경은 Visual Studio가 좀 짱인 듯…)
부정적인 의견이 몇 가지 예상 되는데,


1. 굳이 Node.js가 아니어도 다 할 수 있는 일이다.
2. 그런 미들웨어 없이도 잘 살아왔는데 뭐 하러 붙이는가?
3. Node.js가 중요한 서비스를 구축할 만큼 신뢰할 물건인가?

 기존의 서비스를 좀 더 손쉽게 제작할 수 있다는 점과,

 현존하던 수준의 서비스 이상의 뭔가를 만들어 낼 수 있지 않을까...
 마.. 그래 생각하고 있습니다...

 예를 들어 크롬 브라우저용 컨텐츠를 만든다던지..
부정적인 의견이 몇 가지 예상 되는데,


1. 굳이 Node.js가 아니어도 다 할 수 있는 일이다.
2. 그런 미들웨어 없이도 잘 살아왔는데 뭐 하러 붙이는가?
3. Node.js가 중요한 서비스를 구축할 만큼 신뢰할 물건인가?

 이건 저도 잘 모르겠네요.
 지금은 취미 삼아 들여다 보는 정도라서..
 실제로 중요한 서비스를 얹으려고 한다면 보다 꼼꼼히 리서치 해야 한다.

 다른 팀원들도 설득하려면
 본인이 확신하는 것 이상의 객관적 자료가 필요 하겠지 아마?
웹소켓과 Node.js를 주시하는 것은 가능성에 투자하는 것.
 갑자기 딴 이야기 같지만
 크롬 웹스토어의 게임들도 나날이 고퀄리티화 진행 중.


                                    크롬을 게임서버에 바로 붙이면
                                    게임 클라이언트 못지않은
                                    렌더링 처리를 할 수 있을지도.




PS3

  Square Enix ‘mini ninja’
     PS3 버전과 크롬 버전.
         http://goo.gl/Z6RCR


                               크롬
•   웹소켓이라는 기능을 갖게 된 자바스크립트는
    요즘 다방면에서 고공 행진을 진행 중.
• 그 중 Node.js라는 프레임웍은 서버 사이드를
    자바스크립트로 만들 수 있게 해주는 물건.
• Node.js는 웹소켓과 TCP소켓을 모두 처리할 수
    있어서, 온라인 게임 서비스 구축에도 유용하게
    쓰일 것으로 예상됨
[111217 아꿈사연말모임] 웹소켓과온라인게임

More Related Content

What's hot

이승재, 실시간 HTTP 양방향 통신, NDC2012
이승재, 실시간 HTTP 양방향 통신, NDC2012이승재, 실시간 HTTP 양방향 통신, NDC2012
이승재, 실시간 HTTP 양방향 통신, NDC2012devCAT Studio, NEXON
 
Javascript everywhere - Node.js | Devon 2012
Javascript everywhere - Node.js | Devon 2012Javascript everywhere - Node.js | Devon 2012
Javascript everywhere - Node.js | Devon 2012Daum DNA
 
Nodejs를 이용한 개발
Nodejs를 이용한 개발Nodejs를 이용한 개발
Nodejs를 이용한 개발WebFrameworks
 
Rhea mmo node_for_share
Rhea mmo node_for_shareRhea mmo node_for_share
Rhea mmo node_for_shareRhea Strike
 
Meteor 0.3.6 Preview
Meteor 0.3.6 PreviewMeteor 0.3.6 Preview
Meteor 0.3.6 PreviewJuntai Park
 
Node.js의 도입과 활용
Node.js의 도입과 활용Node.js의 도입과 활용
Node.js의 도입과 활용Jin wook
 
Node.js
Node.jsNode.js
Node.jsymtech
 
Leadweb Nodejs
Leadweb NodejsLeadweb Nodejs
Leadweb Nodejs근호 최
 
Ryan Dahl의 Node.js 소개 동영상 해설 by doortts
Ryan Dahl의 Node.js 소개 동영상 해설 by doorttsRyan Dahl의 Node.js 소개 동영상 해설 by doortts
Ryan Dahl의 Node.js 소개 동영상 해설 by doorttsSuwon Chae
 
세션3 node.js의 의미와 자바의 대안
세션3 node.js의 의미와 자바의 대안세션3 node.js의 의미와 자바의 대안
세션3 node.js의 의미와 자바의 대안Lee Ji Eun
 
[아꿈사/111105] html5 9장 클라이언트측 데이터로 작업하기
[아꿈사/111105] html5 9장 클라이언트측 데이터로 작업하기[아꿈사/111105] html5 9장 클라이언트측 데이터로 작업하기
[아꿈사/111105] html5 9장 클라이언트측 데이터로 작업하기sung ki choi
 
Node.js 자바스크립트로 서버사이드 개발하기
Node.js 자바스크립트로 서버사이드 개발하기Node.js 자바스크립트로 서버사이드 개발하기
Node.js 자바스크립트로 서버사이드 개발하기JeongHun Byeon
 
프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기
프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기
프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기Chang W. Doh
 
Beejei node.js & web service
Beejei   node.js & web serviceBeejei   node.js & web service
Beejei node.js & web serviceBumjin Kim
 
소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안
소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안
소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안Jeongsang Baek
 
Meteor를 통해서 개발하는 웹어플리케이션 서비스
Meteor를 통해서 개발하는 웹어플리케이션 서비스Meteor를 통해서 개발하는 웹어플리케이션 서비스
Meteor를 통해서 개발하는 웹어플리케이션 서비스WebFrameworks
 
Nodejs 발표자료
Nodejs 발표자료Nodejs 발표자료
Nodejs 발표자료shanka2
 
Python server-101
Python server-101Python server-101
Python server-101Huey Park
 
웹소켓 (WebSocket)
웹소켓 (WebSocket)웹소켓 (WebSocket)
웹소켓 (WebSocket)jeongseokoh
 
시간당 수백만 요청을 처리하는 node.js 서버 운영기 - Playnode 2015
시간당 수백만 요청을 처리하는 node.js 서버 운영기 - Playnode 2015시간당 수백만 요청을 처리하는 node.js 서버 운영기 - Playnode 2015
시간당 수백만 요청을 처리하는 node.js 서버 운영기 - Playnode 2015Goonoo Kim
 

What's hot (20)

이승재, 실시간 HTTP 양방향 통신, NDC2012
이승재, 실시간 HTTP 양방향 통신, NDC2012이승재, 실시간 HTTP 양방향 통신, NDC2012
이승재, 실시간 HTTP 양방향 통신, NDC2012
 
Javascript everywhere - Node.js | Devon 2012
Javascript everywhere - Node.js | Devon 2012Javascript everywhere - Node.js | Devon 2012
Javascript everywhere - Node.js | Devon 2012
 
Nodejs를 이용한 개발
Nodejs를 이용한 개발Nodejs를 이용한 개발
Nodejs를 이용한 개발
 
Rhea mmo node_for_share
Rhea mmo node_for_shareRhea mmo node_for_share
Rhea mmo node_for_share
 
Meteor 0.3.6 Preview
Meteor 0.3.6 PreviewMeteor 0.3.6 Preview
Meteor 0.3.6 Preview
 
Node.js의 도입과 활용
Node.js의 도입과 활용Node.js의 도입과 활용
Node.js의 도입과 활용
 
Node.js
Node.jsNode.js
Node.js
 
Leadweb Nodejs
Leadweb NodejsLeadweb Nodejs
Leadweb Nodejs
 
Ryan Dahl의 Node.js 소개 동영상 해설 by doortts
Ryan Dahl의 Node.js 소개 동영상 해설 by doorttsRyan Dahl의 Node.js 소개 동영상 해설 by doortts
Ryan Dahl의 Node.js 소개 동영상 해설 by doortts
 
세션3 node.js의 의미와 자바의 대안
세션3 node.js의 의미와 자바의 대안세션3 node.js의 의미와 자바의 대안
세션3 node.js의 의미와 자바의 대안
 
[아꿈사/111105] html5 9장 클라이언트측 데이터로 작업하기
[아꿈사/111105] html5 9장 클라이언트측 데이터로 작업하기[아꿈사/111105] html5 9장 클라이언트측 데이터로 작업하기
[아꿈사/111105] html5 9장 클라이언트측 데이터로 작업하기
 
Node.js 자바스크립트로 서버사이드 개발하기
Node.js 자바스크립트로 서버사이드 개발하기Node.js 자바스크립트로 서버사이드 개발하기
Node.js 자바스크립트로 서버사이드 개발하기
 
프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기
프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기
프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기
 
Beejei node.js & web service
Beejei   node.js & web serviceBeejei   node.js & web service
Beejei node.js & web service
 
소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안
소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안
소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안
 
Meteor를 통해서 개발하는 웹어플리케이션 서비스
Meteor를 통해서 개발하는 웹어플리케이션 서비스Meteor를 통해서 개발하는 웹어플리케이션 서비스
Meteor를 통해서 개발하는 웹어플리케이션 서비스
 
Nodejs 발표자료
Nodejs 발표자료Nodejs 발표자료
Nodejs 발표자료
 
Python server-101
Python server-101Python server-101
Python server-101
 
웹소켓 (WebSocket)
웹소켓 (WebSocket)웹소켓 (WebSocket)
웹소켓 (WebSocket)
 
시간당 수백만 요청을 처리하는 node.js 서버 운영기 - Playnode 2015
시간당 수백만 요청을 처리하는 node.js 서버 운영기 - Playnode 2015시간당 수백만 요청을 처리하는 node.js 서버 운영기 - Playnode 2015
시간당 수백만 요청을 처리하는 node.js 서버 운영기 - Playnode 2015
 

Similar to [111217 아꿈사연말모임] 웹소켓과온라인게임

[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...JinKwon Lee
 
프론트엔드 개발자의 자바스크립트
프론트엔드 개발자의 자바스크립트 프론트엔드 개발자의 자바스크립트
프론트엔드 개발자의 자바스크립트 jeong seok yang
 
MEAN Stack 기반 모바일 서비스 개발 overview
MEAN Stack 기반 모바일 서비스 개발 overviewMEAN Stack 기반 모바일 서비스 개발 overview
MEAN Stack 기반 모바일 서비스 개발 overview민태 김
 
웹 소프트웨어 시대의 새로운 롤(role) 모델, 자바스크립트
웹 소프트웨어 시대의 새로운 롤(role) 모델, 자바스크립트웹 소프트웨어 시대의 새로운 롤(role) 모델, 자바스크립트
웹 소프트웨어 시대의 새로운 롤(role) 모델, 자바스크립트Rhio Kim
 
Html5 게임 기술의 개요
Html5 게임 기술의 개요Html5 게임 기술의 개요
Html5 게임 기술의 개요Changhwan Yi
 
[리뷰] 풀스택 개발자를 위한 MEAM 스택 입문
[리뷰] 풀스택 개발자를 위한 MEAM 스택 입문[리뷰] 풀스택 개발자를 위한 MEAM 스택 입문
[리뷰] 풀스택 개발자를 위한 MEAM 스택 입문종훈 박
 
프론트엔드 개발자
프론트엔드 개발자프론트엔드 개발자
프론트엔드 개발자jung kyunghwan
 
Rhea_MMO_SNG_Convergence_Server_Architecture
Rhea_MMO_SNG_Convergence_Server_ArchitectureRhea_MMO_SNG_Convergence_Server_Architecture
Rhea_MMO_SNG_Convergence_Server_ArchitectureRhea Strike
 
Front end dev 2016 & beyond
Front end dev 2016 & beyondFront end dev 2016 & beyond
Front end dev 2016 & beyondJae Sung Park
 
Vue SSR vs Prerender
Vue SSR vs PrerenderVue SSR vs Prerender
Vue SSR vs PrerenderChangwan Jun
 
Ndc2013 정리(upload버전)
Ndc2013 정리(upload버전)Ndc2013 정리(upload버전)
Ndc2013 정리(upload버전)Minsu Park
 
유니티 + Nodejs를 활용한 멀티플레이어 게임 개발하기
유니티 + Nodejs를 활용한 멀티플레이어 게임 개발하기유니티 + Nodejs를 활용한 멀티플레이어 게임 개발하기
유니티 + Nodejs를 활용한 멀티플레이어 게임 개발하기Kiyoung Moon
 
어그로월드 Season1 - Aggro World season 1
어그로월드 Season1 - Aggro World season 1어그로월드 Season1 - Aggro World season 1
어그로월드 Season1 - Aggro World season 1bingoori
 
Weblockly 소개자료
Weblockly 소개자료Weblockly 소개자료
Weblockly 소개자료Kay Sung Hyuk
 
차세대 모바일 웹 UI/UX 기술 및 표준화 동향 (기조발표)
차세대 모바일 웹 UI/UX 기술 및 표준화 동향 (기조발표)차세대 모바일 웹 UI/UX 기술 및 표준화 동향 (기조발표)
차세대 모바일 웹 UI/UX 기술 및 표준화 동향 (기조발표)Jonathan Jeon
 
20140625 멜팅팟 세미나 부산 Node.js로 클라우드 서비스 개발하기
20140625 멜팅팟 세미나 부산 Node.js로 클라우드 서비스 개발하기20140625 멜팅팟 세미나 부산 Node.js로 클라우드 서비스 개발하기
20140625 멜팅팟 세미나 부산 Node.js로 클라우드 서비스 개발하기영욱 김
 
20150207 Node.js on Azure - MeltingPot seminar in Busan
20150207 Node.js on Azure - MeltingPot seminar in Busan20150207 Node.js on Azure - MeltingPot seminar in Busan
20150207 Node.js on Azure - MeltingPot seminar in Busan영욱 김
 
빠르게훓어보는 Node.js와 Vert.x
빠르게훓어보는 Node.js와 Vert.x빠르게훓어보는 Node.js와 Vert.x
빠르게훓어보는 Node.js와 Vert.xTerry Cho
 

Similar to [111217 아꿈사연말모임] 웹소켓과온라인게임 (20)

[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...
 
프론트엔드 개발자의 자바스크립트
프론트엔드 개발자의 자바스크립트 프론트엔드 개발자의 자바스크립트
프론트엔드 개발자의 자바스크립트
 
MEAN Stack 기반 모바일 서비스 개발 overview
MEAN Stack 기반 모바일 서비스 개발 overviewMEAN Stack 기반 모바일 서비스 개발 overview
MEAN Stack 기반 모바일 서비스 개발 overview
 
웹 소프트웨어 시대의 새로운 롤(role) 모델, 자바스크립트
웹 소프트웨어 시대의 새로운 롤(role) 모델, 자바스크립트웹 소프트웨어 시대의 새로운 롤(role) 모델, 자바스크립트
웹 소프트웨어 시대의 새로운 롤(role) 모델, 자바스크립트
 
Html5 게임 기술의 개요
Html5 게임 기술의 개요Html5 게임 기술의 개요
Html5 게임 기술의 개요
 
[리뷰] 풀스택 개발자를 위한 MEAM 스택 입문
[리뷰] 풀스택 개발자를 위한 MEAM 스택 입문[리뷰] 풀스택 개발자를 위한 MEAM 스택 입문
[리뷰] 풀스택 개발자를 위한 MEAM 스택 입문
 
프론트엔드 개발자
프론트엔드 개발자프론트엔드 개발자
프론트엔드 개발자
 
Rhea_MMO_SNG_Convergence_Server_Architecture
Rhea_MMO_SNG_Convergence_Server_ArchitectureRhea_MMO_SNG_Convergence_Server_Architecture
Rhea_MMO_SNG_Convergence_Server_Architecture
 
JS Game Engines
JS Game EnginesJS Game Engines
JS Game Engines
 
Front end dev 2016 & beyond
Front end dev 2016 & beyondFront end dev 2016 & beyond
Front end dev 2016 & beyond
 
Vue SSR vs Prerender
Vue SSR vs PrerenderVue SSR vs Prerender
Vue SSR vs Prerender
 
Ndc2013 정리(upload버전)
Ndc2013 정리(upload버전)Ndc2013 정리(upload버전)
Ndc2013 정리(upload버전)
 
유니티 + Nodejs를 활용한 멀티플레이어 게임 개발하기
유니티 + Nodejs를 활용한 멀티플레이어 게임 개발하기유니티 + Nodejs를 활용한 멀티플레이어 게임 개발하기
유니티 + Nodejs를 활용한 멀티플레이어 게임 개발하기
 
어그로월드 Season1 - Aggro World season 1
어그로월드 Season1 - Aggro World season 1어그로월드 Season1 - Aggro World season 1
어그로월드 Season1 - Aggro World season 1
 
Weblockly 소개자료
Weblockly 소개자료Weblockly 소개자료
Weblockly 소개자료
 
차세대 모바일 웹 UI/UX 기술 및 표준화 동향 (기조발표)
차세대 모바일 웹 UI/UX 기술 및 표준화 동향 (기조발표)차세대 모바일 웹 UI/UX 기술 및 표준화 동향 (기조발표)
차세대 모바일 웹 UI/UX 기술 및 표준화 동향 (기조발표)
 
Node week1
Node week1Node week1
Node week1
 
20140625 멜팅팟 세미나 부산 Node.js로 클라우드 서비스 개발하기
20140625 멜팅팟 세미나 부산 Node.js로 클라우드 서비스 개발하기20140625 멜팅팟 세미나 부산 Node.js로 클라우드 서비스 개발하기
20140625 멜팅팟 세미나 부산 Node.js로 클라우드 서비스 개발하기
 
20150207 Node.js on Azure - MeltingPot seminar in Busan
20150207 Node.js on Azure - MeltingPot seminar in Busan20150207 Node.js on Azure - MeltingPot seminar in Busan
20150207 Node.js on Azure - MeltingPot seminar in Busan
 
빠르게훓어보는 Node.js와 Vert.x
빠르게훓어보는 Node.js와 Vert.x빠르게훓어보는 Node.js와 Vert.x
빠르게훓어보는 Node.js와 Vert.x
 

More from sung ki choi

[아꿈사] 게임 기초 수학 물리 1,2장
[아꿈사] 게임 기초 수학 물리 1,2장[아꿈사] 게임 기초 수학 물리 1,2장
[아꿈사] 게임 기초 수학 물리 1,2장sung ki choi
 
[120316] node.js 프로그래밍 5장
[120316] node.js 프로그래밍 5장[120316] node.js 프로그래밍 5장
[120316] node.js 프로그래밍 5장sung ki choi
 
제프리 리처의 Windows via C/C++ : 8장 유저 모드에서의 스레드 동기화
제프리 리처의 Windows via C/C++ : 8장 유저 모드에서의 스레드 동기화제프리 리처의 Windows via C/C++ : 8장 유저 모드에서의 스레드 동기화
제프리 리처의 Windows via C/C++ : 8장 유저 모드에서의 스레드 동기화sung ki choi
 
[아꿈사/110903] 도메인주도설계 4장
[아꿈사/110903] 도메인주도설계 4장[아꿈사/110903] 도메인주도설계 4장
[아꿈사/110903] 도메인주도설계 4장sung ki choi
 
[110730/아꿈사발표자료] mongo db 완벽 가이드 : 7장 '고급기능'
[110730/아꿈사발표자료] mongo db 완벽 가이드 : 7장 '고급기능'[110730/아꿈사발표자료] mongo db 완벽 가이드 : 7장 '고급기능'
[110730/아꿈사발표자료] mongo db 완벽 가이드 : 7장 '고급기능'sung ki choi
 
[아꿈사/110528] 멀티코어cpu이야기 5,6장
[아꿈사/110528] 멀티코어cpu이야기 5,6장[아꿈사/110528] 멀티코어cpu이야기 5,6장
[아꿈사/110528] 멀티코어cpu이야기 5,6장sung ki choi
 
[아꿈사/110514] 멀티코어cpu이야기 시작발표
[아꿈사/110514] 멀티코어cpu이야기 시작발표[아꿈사/110514] 멀티코어cpu이야기 시작발표
[아꿈사/110514] 멀티코어cpu이야기 시작발표sung ki choi
 
[110331] visual studio 속성 관리자
[110331] visual studio 속성 관리자[110331] visual studio 속성 관리자
[110331] visual studio 속성 관리자sung ki choi
 
100828 [visual studio camp #1] C++0x와 Windows7
100828 [visual studio camp #1] C++0x와 Windows7100828 [visual studio camp #1] C++0x와 Windows7
100828 [visual studio camp #1] C++0x와 Windows7sung ki choi
 
110212 [아꿈사발표자료] taocp#1 1.2.8. 피보나치수열
110212 [아꿈사발표자료] taocp#1 1.2.8. 피보나치수열110212 [아꿈사발표자료] taocp#1 1.2.8. 피보나치수열
110212 [아꿈사발표자료] taocp#1 1.2.8. 피보나치수열sung ki choi
 
101102 endofdb select.1_rdbms
101102 endofdb select.1_rdbms101102 endofdb select.1_rdbms
101102 endofdb select.1_rdbmssung ki choi
 
100526 windows7 mfc_최성기_배포용
100526 windows7 mfc_최성기_배포용100526 windows7 mfc_최성기_배포용
100526 windows7 mfc_최성기_배포용sung ki choi
 
100511 boost&tips 최성기
100511 boost&tips 최성기100511 boost&tips 최성기
100511 boost&tips 최성기sung ki choi
 
Touch Ux With Win32
Touch Ux With Win32Touch Ux With Win32
Touch Ux With Win32sung ki choi
 

More from sung ki choi (14)

[아꿈사] 게임 기초 수학 물리 1,2장
[아꿈사] 게임 기초 수학 물리 1,2장[아꿈사] 게임 기초 수학 물리 1,2장
[아꿈사] 게임 기초 수학 물리 1,2장
 
[120316] node.js 프로그래밍 5장
[120316] node.js 프로그래밍 5장[120316] node.js 프로그래밍 5장
[120316] node.js 프로그래밍 5장
 
제프리 리처의 Windows via C/C++ : 8장 유저 모드에서의 스레드 동기화
제프리 리처의 Windows via C/C++ : 8장 유저 모드에서의 스레드 동기화제프리 리처의 Windows via C/C++ : 8장 유저 모드에서의 스레드 동기화
제프리 리처의 Windows via C/C++ : 8장 유저 모드에서의 스레드 동기화
 
[아꿈사/110903] 도메인주도설계 4장
[아꿈사/110903] 도메인주도설계 4장[아꿈사/110903] 도메인주도설계 4장
[아꿈사/110903] 도메인주도설계 4장
 
[110730/아꿈사발표자료] mongo db 완벽 가이드 : 7장 '고급기능'
[110730/아꿈사발표자료] mongo db 완벽 가이드 : 7장 '고급기능'[110730/아꿈사발표자료] mongo db 완벽 가이드 : 7장 '고급기능'
[110730/아꿈사발표자료] mongo db 완벽 가이드 : 7장 '고급기능'
 
[아꿈사/110528] 멀티코어cpu이야기 5,6장
[아꿈사/110528] 멀티코어cpu이야기 5,6장[아꿈사/110528] 멀티코어cpu이야기 5,6장
[아꿈사/110528] 멀티코어cpu이야기 5,6장
 
[아꿈사/110514] 멀티코어cpu이야기 시작발표
[아꿈사/110514] 멀티코어cpu이야기 시작발표[아꿈사/110514] 멀티코어cpu이야기 시작발표
[아꿈사/110514] 멀티코어cpu이야기 시작발표
 
[110331] visual studio 속성 관리자
[110331] visual studio 속성 관리자[110331] visual studio 속성 관리자
[110331] visual studio 속성 관리자
 
100828 [visual studio camp #1] C++0x와 Windows7
100828 [visual studio camp #1] C++0x와 Windows7100828 [visual studio camp #1] C++0x와 Windows7
100828 [visual studio camp #1] C++0x와 Windows7
 
110212 [아꿈사발표자료] taocp#1 1.2.8. 피보나치수열
110212 [아꿈사발표자료] taocp#1 1.2.8. 피보나치수열110212 [아꿈사발표자료] taocp#1 1.2.8. 피보나치수열
110212 [아꿈사발표자료] taocp#1 1.2.8. 피보나치수열
 
101102 endofdb select.1_rdbms
101102 endofdb select.1_rdbms101102 endofdb select.1_rdbms
101102 endofdb select.1_rdbms
 
100526 windows7 mfc_최성기_배포용
100526 windows7 mfc_최성기_배포용100526 windows7 mfc_최성기_배포용
100526 windows7 mfc_최성기_배포용
 
100511 boost&tips 최성기
100511 boost&tips 최성기100511 boost&tips 최성기
100511 boost&tips 최성기
 
Touch Ux With Win32
Touch Ux With Win32Touch Ux With Win32
Touch Ux With Win32
 

[111217 아꿈사연말모임] 웹소켓과온라인게임

  • 1. 웹소켓과 온라인 게임 Web Socket, JavaScript, Node.js, and Online Game. 아꿈사 http://cafe.naver.com/architect1 최성기 florist.sk@gmail.com
  • 2. Note. 웹 실무자가 아닌 어느 개발자의 자료조사 내용 정리 정도로 봐주세요. 자바스크립트 JavaScript 웹소켓 Web Socket 온라인 게임 Online Game
  • 3. 자바스크립트 JavaScript 웹소켓 Web Socket 온라인 게임 Online Game
  • 4. 웹 소켓에 대해서는 지난 번에 열심히 떠들어 놓은 자료가 존재. 오늘은 PT 1장만 할애. 세 가지만 정리하고 넘어가자. http://www.slideshare.net/hiscale/111015-html5-1 1. http 실시간 통신에 쓰일 차세대 기술. 2. 불가능 -> 가능 (X), 복잡함 -> 심플함 (O) 3. 이걸 온라인 게임에 써먹어 볼 수는 없을까?
  • 5. 자바스크립트 JavaScript 웹소켓 Web Socket 온라인 게임 Online Game
  • 6. 자바스크립트의 시작은 웹브라우저에 기생(?)하면서 마우스 커서에 곰돌이 인형 따위를 따라다니게 만들어주는 싸구려 이미지(...) 였지만 마우스 커서를 꾸며보아요 화면에 눈이 내리게 해주는 효과 철수와 영희 만난 지 600일째 되는 날 홈페이지에 현재시간 출력하기 해가 지면 배경색이 어두워져요! 링크 텍스트에 무지개 효과 넣기 …그 외 유치한 효과 다수.
  • 8. 지금은 아무도 JavaScript를 무시할 수 없다. JSON AJAX d3.js Node.js JQuery Mobile App. WebGL Web Socket …그 외 놀라운 기능 다수.
  • 9. 심지어 이제는 게임 개발자의 밥줄마저 위협(?) 하는 존재가 되었다.
  • 10. 얼마 전 H3의 자료를 보니 자바스크립트의 변화된 입지에 대해 잘 설명된 자료가 있음. http://www.slideshare.net/rhio.kim/track1-2-role-java-script JS를 이용해 웹 Front-end 개발은 이전에 비할 바 없는 풍성한 표현력을 갖게 되었고 3D Graphics 표현도 가능해 졌으며 이제는 Back-end, 즉 서버 어플리케이션도 개발할 수 있게 되었다.
  • 11. 자바스크립트 JavaScript 웹소켓 Web Socket 온라인 게임 Online Game
  • 12. 자바스크립트로 쏟아져 나오는 다양한 분야 / 갖가지 기능의 프레임워크가 존재 Node.js는 그 중에서 서버 사이드 애플리케이션 제작을 위한 프레임워크 중 하나. Ryan Dahl이라는 양반이 2009년 말에 발표. http://www.slideshare.net/rockdoli/nodejs-8492796
  • 13. 웹 브라우저별 JavaScript 엔진 파이어폭스 : SpiderMonkey 크롬 : V8 사파리 : JavaScriptCore IE9 : Chakra 오페라 : Carakan V8은 구글 크롬에 탑재된 C++로 제작된 JS 엔진. 오픈소스로 공개되어 있다. http://code.google.com/p/v8/ Node.js가 가져다 쓴 엔진.
  • 14. Node.js는 자바스크립트로 몇 줄만 적으면 웹서버가 되기도 하고 var http=require('http'); http.createServer(function(req,res){ res.writeHead(200,{'Content-Type':'text/plain'}); res.end('Hello Worldn'); }).listen(1337,"127.0.0.1"); console.log('Server running at http://127.0.0.1:1337/'); TCP 서버가 되기도 하는 물건이다. var net=require('net'); var server=net.createServer(function(socket){ socket.write("Echo serverrn"); socket.pipe(socket); }); server.listen(1337,"127.0.0.1");
  • 15. 물론 간단히 웹소켓 서버가 될 수도 있다. var io = require('socket.io').listen(80); io.sockets.on('connection', function (socket) { socket.emit('news', { hello: 'world' }); socket.on('my other event', function (data) { console.log(data); }); }); Non-blocking IO 방식 인터페이스를 제공하는 싱글스레드 개발환경 여러 프로세스를 띄우고 클러스터 구성하면 같은 포트를 공유하게 할 수도 있음. http://nodejs.org/docs/v0.6.0/api/cluster.html
  • 16. 2009년 11월 8일 JSConf.eu 2009 행사에서 발표 후 아직은 그리 넓게 알려지진 않았으나 꾸준히 상승세.
  • 17. http://www.slideshare.net/rhio.kim/track1-2-role-java-script http://www.slideshare.net/rockdoli/nodejs-8492796 http://goo.gl/1qECP http://doortts.tistory.com/category/node.js%20따라배우기
  • 18. 요약해 보면 Node.js는 V8 위에서 돌아가는 자바스크립트 런타임인데, 만들기 쉽고 확장하기 쉬운 네트워크 프로그램 개발환경 v0.5x 버전부터 윈도우 버전은 IOCP를 사용, 성능이 대폭 향상 윈도우 설치방법을 블로그에 정리해 두었습니다. http://devnote.tistory.com/213 http://nodejs.org/codeconf.pdf
  • 19. 공식 홈페이지에는 Node.js를 적용한 기업들의 코멘트가 있고, 얼마전 KTH의 컨퍼런스 H3의 웹페이지 구축에도 쓰였음
  • 20. 이 물건을 온라인 게임에 써먹어 볼 수는 없을까?
  • 21. 자바스크립트 JavaScript 웹소켓 Web Socket 온라인 게임 Online Game 이후부터 내용이 상당히 주관적임.
  • 22. 1. 일단 서버를 Node.js로 만드는 걸 생각할 수 있겠지만 이 팀은 서버도 JavaScript로 만드는 걸까? 이제 막 2년된 v0.6의 물건을 베이스로 게임서버를 짠다는 건 무척 실험적인 선택. 본인이 사장님이나 PD가 아니고서는... 매우 힘든 결정일 듯.
  • 23. Node.js가 웹 개발자들에게 주는 의미: Front-end 개발과 Back-end 개발을 하나의 통일된 언어로 개발할 수 있게 해주는 환경. http://www.slideshare.net/rhio.kim/track1-2-role-java-script
  • 24. Node.js가 게임 서버 개발자에게 주는 의미는..? 하나의 프로세스에서 TCP 소켓도 처리할 수 있고, 웹 소켓도 처리할 수 있는 물건. ...이라고 저 혼자 생각해 봤습니다;
  • 25. 보통은 자체 게임 클라이언트가 서버에 접속해서 게임을 플레이 하는 식이고
  • 26. 게임 웹사이트에서 게임의 일부 정보들을 열람한다. 캐릭터 정보, 경매장 상황, 친구 리스트, 길드 정보 등.
  • 27. 웹서버에 정보를 연동할 때는 보통 DB를 거친다. 게임서버와 웹서버가 직접 연결되긴 좀 불편하고 귀찮아.. 웹은 주로 정보를 읽기(read)만 한다. gpg study 포럼의 7년전 스레드 ‘웹서버로 요청 보내서 결과 받아오기’ 참고. http://www.gpgstudy.com/forum/viewtopic.php?t=3955
  • 28. 웹에서의 게임 정보 연동은 좀 불편하고 귀찮아서 그렇지 어느 정도 수준까지는 지금의 기술들로도 다 할 수 있는 작업. 브라우저에서 게임의 캐릭터를 볼 수도 있고 게임에 접속중인 친구와 채팅을 할 수도 있다. 커뮤니티 활성화가 중요한 온라인게임은 웹 브라우저 사용이 활발해짐에 따라 웹 접근성도 중요한 서비스 고려사항이다.
  • 29. 게임 클라이언트만 우선 빼고 다이어그램을 일렬로 폈습니다. 웹서버에서는 주로 게임 데이터를 읽기만 하고 연동 작업이 복잡하기도 해서 DB를 거쳐서 연결되는 구성을 했는데 웹 브라우저가 데이터 읽기 이상의 인터랙션을 하고 싶다면,
  • 30. 웹소켓 TCP소켓 중간에 Node.js 를 미들웨어로 쓰면 어떨까?
  • 31. 웹소켓 TCP소켓 웹소켓 그러면 유저의 웹 브라우저와도 Node.js를 거쳐 게임서버가 바로 통신할 수도 있게 되고
  • 32. 웹소켓 TCP소켓 웹소켓 TCP소켓 여기에 게임 클라이언트가 TCP로 붙으면 웹 브라우저와 바로 연결돼 채팅을 할 수도 있겠지.
  • 33. ODBC 애드온 웹소켓 TCP소켓 웹소켓 TCP소켓 Node.js는 C/C++로 애드온을 만들어 붙일 수도 있으니 많이 쓰이는 MS-SQL과 연동하는 ODBC 모듈을 직접 짤 수도 있고 혹시 MongoDB같은 NOSQL을 쓴다면 바로 연결될 수도 있다.
  • 34. 결국은 처음에 그렸던 전형적인 온라인 게임 서비스의 구성에서
  • 35. ODBC 애드온 웹소켓 TCP소켓 웹소켓 TCP소켓 모든 구성요소와 통신할 수 있는 위치의 미들웨어를 Node.js로 구축할 수 있다는 말이 된다.
  • 36. ODBC 애드온 웹소켓 TCP소켓 TCP소켓 웹소켓? 지금 당장을 보고 하는 이야기는 아니지만.. 유저가 웹소켓을 지원하지 않는 브라우저를 사용해 불안하더라도
  • 37. ODBC 애드온 웹소켓 TCP소켓 TCP소켓 웹소켓 or AJAX Node.js는 XmlHttpRequest를 이용한 AJAX 통신도 처리할 수 있다.
  • 38. 부정적인 의견이 몇 가지 예상 되는데, 1. 굳이 Node.js가 아니어도 다 할 수 있는 일이다. 2. 그런 미들웨어 없이도 잘 살아왔는데 뭐 하러 붙이는가? 3. Node.js가 중요한 서비스를 구축할 만큼 신뢰할 물건인가?
  • 39. 부정적인 의견이 몇 가지 예상 되는데, 1. 굳이 Node.js가 아니어도 다 할 수 있는 일이다. 2. 그런 미들웨어 없이도 잘 살아왔는데 뭐 하러 붙이는가? 3. Node.js가 중요한 서비스를 구축할 만큼 신뢰할 물건인가? 맞다. AJAX vs 웹소켓 의 경우와 비슷한데, 불가능 -> 가능이 아니라 복잡함 -> 단순함의 변화다. 전보다 더욱 쉽고 간단하고 빠르게 개발할 수 있는 환경을 얻는 것이다. 쉽고 빠르다는 것은 생산성이 높아지고 유지/보수가 쉬워진다는 말이다. (그래도 디버깅 환경은 Visual Studio가 좀 짱인 듯…)
  • 40. 부정적인 의견이 몇 가지 예상 되는데, 1. 굳이 Node.js가 아니어도 다 할 수 있는 일이다. 2. 그런 미들웨어 없이도 잘 살아왔는데 뭐 하러 붙이는가? 3. Node.js가 중요한 서비스를 구축할 만큼 신뢰할 물건인가? 기존의 서비스를 좀 더 손쉽게 제작할 수 있다는 점과, 현존하던 수준의 서비스 이상의 뭔가를 만들어 낼 수 있지 않을까... 마.. 그래 생각하고 있습니다... 예를 들어 크롬 브라우저용 컨텐츠를 만든다던지..
  • 41. 부정적인 의견이 몇 가지 예상 되는데, 1. 굳이 Node.js가 아니어도 다 할 수 있는 일이다. 2. 그런 미들웨어 없이도 잘 살아왔는데 뭐 하러 붙이는가? 3. Node.js가 중요한 서비스를 구축할 만큼 신뢰할 물건인가? 이건 저도 잘 모르겠네요. 지금은 취미 삼아 들여다 보는 정도라서.. 실제로 중요한 서비스를 얹으려고 한다면 보다 꼼꼼히 리서치 해야 한다. 다른 팀원들도 설득하려면 본인이 확신하는 것 이상의 객관적 자료가 필요 하겠지 아마?
  • 42. 웹소켓과 Node.js를 주시하는 것은 가능성에 투자하는 것. 갑자기 딴 이야기 같지만 크롬 웹스토어의 게임들도 나날이 고퀄리티화 진행 중. 크롬을 게임서버에 바로 붙이면 게임 클라이언트 못지않은 렌더링 처리를 할 수 있을지도. PS3 Square Enix ‘mini ninja’ PS3 버전과 크롬 버전. http://goo.gl/Z6RCR 크롬
  • 43. 웹소켓이라는 기능을 갖게 된 자바스크립트는 요즘 다방면에서 고공 행진을 진행 중. • 그 중 Node.js라는 프레임웍은 서버 사이드를 자바스크립트로 만들 수 있게 해주는 물건. • Node.js는 웹소켓과 TCP소켓을 모두 처리할 수 있어서, 온라인 게임 서비스 구축에도 유용하게 쓰일 것으로 예상됨