SlideShare a Scribd company logo
1 of 32
HTML5를 여행하는
비(非) 웹 개발자를 위한 안내서
The Non – Web Programmer’s Guide to the HTML5
                                           1부. 웹 소켓




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


                                                    최성기
                                         florist.sk@gmail.com
1.   HTTP의 대전제
2.   AJAX
3.   웹 소켓
4.   Node.js
5.   Java script
원래는 Node.js에 대해서 이야기 하려고
PT 배경색도 로고 이미지 바탕색이랑 맞춰두고 시작한 pt였으나
준비 부족으로 결국 Node.js는 얘기도 못 꺼내고 웹소켓 까지만 준비되었습니다...
1.   HTTP의 대전제
2.   AJAX
3.   웹 소켓
4.   Node.js
5.   Java script
HTTP
Hyper-Text Transfer Protocol
아주 멋진super보다 더 멋진 hyper 텍스트를
전송하려고 만들어낸 통신 규약.

서버가 Html로 만들어진 문서(디자인된 문서)를
유저에게 잘 보여주는 것이 이 프로토콜의 최초 목적이었다.

이전 세대에는 터미널 창에서 오직 텍스트만 주고 받던 통신 시대였으니
차세대 통신 규약으로의 적절한 설정이었다.
대.전.제
http 프로토콜을 이용한 통신의 대전제:
클라이언트는 원하는 페이지를 url로 요청하고,
서버는 그 페이지를 보내준다.

http 클라이언트(≒웹 브라우저)는 url을 보내고 결과를 받아오는 게
유일한 존재목적이고, 그 외 다른 것은 할 필요도 없었고, 할 수도 없었다.

즉,
브라우저는 서버와 통신하려면    다른 페이지로 이동해야 하는 대전제를 가진다.
근데 http는 점점 대중화되고, 페이지 보는 거 말고 다른 게 하고 싶어 졌다.
Ex) 이 사이트에 가입하고 싶어. ‘ok’버튼을 눌렀을 때 가입시켜줘.
사이트 회원가입?
      사진이나 동영상 올리기?
      남의 글에 악플 달기?

      클라이언트가 ‘페이지 읽기(이동하기)’가 아닌 다른 작업을 하고 싶을 땐
      클라이언트가 할 수 있는 유일한 스킬인 ‘서버에 원하는 url 쏘기’를 시전하면서
      이때 부가적인 정보를 붙이도록 했다.

      http://XXX.com/join_member.htm?id=florist&name=최성기&gender=male...[1]




[1]
 Url에 정보를 붙여서 보내는 GET 방식 이외에,
내부적으로 전송하는 POST 방식이 있다. (쉬운 설명을 위해 간소화.)
철수는 XXX 사이트에 회원 가입을 했을 때
한 페이지 가득한 환영의 인사를 보고 기분이 좋았다.

‘날 위해 새 페이지를 보여줘 가면서까지 환영해 주고 있구나!
 난 사랑 받기 위해 태어난 사람이야!’




                                    웰컴!
                                 격하게 환영합니다.


      Join_form.htm               Join_result.htm

하지만 그것은 불편한 진실이었다.
사실 http로는 무언가 새 페이지를 요청하지 않고서는
회원가입 따위의 요청을 서버에 날릴 수가 없었다.

(과연… 철수는 사랑 받기 위해 태어난 사람일까…?)
그러고 보니 아이디 중복체크를 할 때도 그랬다.




서버에게 중복 검사를 요청하기 위해선 새 페이지를 요청해야만 하는데,
회원정보 작성 중에 페이지를 이동할 수 없기 때문에
새로 요청한 페이지를 팝업창으로 띄웠던 것이다.
(요즘 사이트들은 대부분 팝업창 없이 검사 가능. Ajax를 이용)



                             이미지 출처 : http://jinzza.net/IdCheckHowTo.html
하드웨어 드라이버 다운로드 페이지


   제품종류       제품시리즈       모델명


   메인보드       GeForce     GeForce 9800 GT
   그래픽카드      nForce      GeForce 9800 GX2
   사운드카드      3D Vision   GeForce 9600 GT
   …          …           …




다른 예를 하나 더 들어보자.
여태 살면서 한 번쯤은 다 겪어봤을 만한 하드웨어 드라이버 다운로드 폼 구성은
다른 페이지로 이동하지 않으면서도 서버에서 모델 정보를 받아오는 것처럼 보이지만
이는 눈속임에 불과하다.
하드웨어 드라이버 다운로드 페이지


         제품종류          제품시리즈                   모델명


          메인보드          GeForce                GeForce 9800 GT
          그래픽카드         nForce                 GeForce 9800 GX2
          사운드카드         3D Vision              GeForce 9600 GT
          …             …                      …

                     graphic_serize_list.htm   geforce_model_list.htm




      실은 iframe이라는 태그로 페이지에 구멍을 뚫어놓고,
      그 구멍에 결국 유일하게 할 줄 아는 [2] ‘새로운 url 페이지 열기’ 스킬을 시전한 것 뿐이다.




[2]   물론 오늘날의 웹은 가능하다. 지금은 원시적인 기법에 대해 이야기 하고 있다.
하드웨어 드라이버 다운로드 페이지


제품종류


메인보드
그래픽카드
사운드카드
…




    제품시리즈                                모델명


     GeForce                … 실상은 이렇다.    GeForce 9800 GT
     nForce                               GeForce 9800 GX2
     3D Vision                            GeForce 9600 GT
     …                                    …

  graphic_serize_list.htm                 geforce_model_list.htm
브라우저가 웹서버에게 뭔가를 요청하려면
페이지를 이동하지 않고서는 요청할 방법이 없었다.

이런 제한적인 환경 때문에,
웹에서 무언가 다양한 기능을 하게 해주는 꼼수들과 대체기법들이 유행했다.

플래시를 집어넣어 몽땅 플래시 기반으로 사이트를 만들기도 하고
특히 한국에서는 뭘 좀 만들어야지 싶으면 ActiveX를 얹어서
웹도 아니고 애플리케이션도 아닌 어정쩡한 결과물들이 홍수처럼 흘러 넘쳤다.
그러던 한 편에선구글   이란 이름의 괴집단이
           꾸준히 세력을 키워가고 있었다.

          구글톡, 지메일, 구글그룹, 구글문서, 구글리더, 구글지도 등
          신기한 서비스들을 연이어 내놓았는데,
          구글의 서비스는 웹페이지 같지 않게 동적이고 자연스러웠다.
‘짤각’ 거리는 새로고침 소리도 들리지 않았는데도 웹페이지는 자유롭게 변환되었고
사람들은 ‘이런 게 웹에서 된단 말이야?’ 라고 말했다.


게다가 구글은,

이 모든걸 ActiveX 없이 해냈다.
1.   HTTP의 대전제
2.   AJAX
3.   웹 소켓
4.   Node.js
5.   Java script
AJAX
      Asynchronous Javascript And Xml

      구글이 사용한 기법은 Ajax라는 기법이었다.
      자바 스크립트와 xml을 이용한 비동기 통신.                 Konami, 1987


      2005년 경 부터 점차 대중화 되면서 쓰이기 시작했고[3]
      오늘날 Ruby, JQuery 등을 이용한 대중적인 웹 개발의 기반에도
      페이지 이동 없는 통신의 근간을 이루는 기술이 되었다.

      Ajax가 쓰이기 시작하면서 웹 페이지들은 페이지 이동 없이도 서버와 통신을 했고
      페이지에 구멍을 뚫지 않아도 특정 영역만 업데이트하거나 조작할 수 있게 됐다.



[3]
  Ajax 기법은 2005년부터 대중화되기 시작했지만, 사실 예전부터 존재하던 기법이다.
 거의 알려지지 않았던 테크닉이었고, 이전엔 Ajax라는 이름도 없었다.
웹 브라우저에 쓰이던 자바 스크립트에는 사실
        XMLHttpRequest라는 API가 있었다. (IE 기준 5.0부터 지원)
        http://dna.daum.net/TR/XMLHttpRequest/
        http://ko.wikipedia.org/wiki/Ajax

        이녀석을 통해 url 이동이 아닌 임의 요청을 보내고 응답을 받을 수 있었는데
        그 동안엔 있는 줄도 몰랐고, 또 쓰면 이렇게 멋있어질 줄 몰랐겠지.

        아무튼 구글 및 기타 선두 진영들[4]이 Ajax라는 이름을 붙여 유행시켰고
        웹페이지는 이제 이전과 비교할 수 없는 다양한 표현력을 갖게 되었다.

        일부 책에서는 이런 비동기 방식을 ‘XHR을 이용한 통신’이라고 부르기도 한다.




[4]   사실 구글밖에 모른다...
이미지 출처 : http://goo.gl/XEey5




이젠 회원 가입할 때

버튼이나 팝업창 없이 입력 focus만 떠나면

바로 웹서버와 통신해서 중복체크를 할 수 있고
검색어 추천 기능




검색창에 글씨가 한자씩 타이핑 될 때마다

웹서버에 단어를 보내

추천 검색어 리스트를 보여줄 수도 있고
구글 지도




마우스 입력에 따라 브라우저에서 맵을 늘였다 줄였다…

위성 사진을 보였다가 지도를 보였다가…

이런 건 도대체 어떻게 하는 거야


웹 브라우저만 가지고도 다양한 표현이 가능해졌다.
Ajax의 사용으로 인해
Http 통신을 할 때의 대전제였던 ‘페이지 갱신’이라는 제약은
이제 무의미해진 옛날 말이 되었다.

Ajax를 이용한 웹사이트는 나날이 늘어났고
데스크탑 어플리케이션으로 구현됐던 상당수 프로그램이
차츰 웹 기반으로 대체되기 시작했다.


Ajax의 표현력에 반한 철수가 어느 날
MSN 메신저를 설치할 줄 모르는 영희를 위해   웹 메신저를 만들기로 결심한다.
웹 기반 메신저 통신 예제 :




  구글톡이 등장하기 이전에도 ActiveX없이 동작하는 웹 채팅은 존재했다.

   ‘별로 어렵지 않을 거야. Ajax는 짱 이니까.’

  철수는 부푼 기대감을 안고 개발을 하기 시작했는데
  얼마 안 가서 난관에 부딪혔다.
요청
       응답
                                         요청
                                         응답




웹 브라우저가     XMLHttpRequest를 이용해 서버로   먼저 요청을 날리고
서버가 이에 대한 응답을 보내주는 것 까지는 크게 문제가 없었지만
요청


        응답?

         요청
                                     응답?




서버가 요청 없는 브라우저에게 먼저 통신을 시작할 수 있는 방법이 없었다.

서버는 응답밖에 할 수 없었다.
자유로운 양 방향 통신이 불가능한 반 쪽짜리 통신이었다.
출처 : 마이크로 소프트웨어 2010년 11월호 ‘모바일 실시간 그림판 구현’中..
출판사 리뷰 中…
     …Ajax 1.0은 시작에 불과했다. 이제 근본적인 변
     화를 몰고 오는 Ajax 2.0, Comet이 온다!

     Ajax가 웹에 불러온 변화들을 기억할 것이다.
     Ajax로 인해 더욱 풍성해진 웹은 더욱 사용자에
     가깝게 다가설 수 있었고, 결국 Web 2.0이라는
     커다란 패러다임의 변화를 이끌 수 있었다.

     Comet은 Ajax가 보여주었던 변화에서 한걸음
     더 나아가는 기술이다. 클라이얶트가 요청하기
     전에 서버가 자유롭게 메시지를 보낼 수 있고,
     그 결과 양측의 컴퓨터가 웹을 통해 자유롭게 대
     화할 수 있는 진정한 대화형 웹 애플리케이션의
     시대, Comet이 만들어갈 새로운 웹의 모습이다.




하지만 초큼 어렵다.
요즈음의 웹사이트에서 볼 수 있는
페이지 갱신 없이 이루어지는 실시간 통신들은
모두 Ajax와 Comet에 바탕을 두고 있다.
(IE에서도 잘 동작하는 것들은 모두 Ajax라고 보면 된다.)

Comet을 통해 양방향 실시간 통신이 가능해 졌지만
다소 억지스러운 테크닉은 개념을 초큼 복잡하게 만들었다.

웹은 아직도 무섭게 성장하고 있고 수요는 점점 늘어가고 있다.

그러는 와중에 HTML는 5.0 표준을 만들어 가고 있는 중인데,
1.   HTTP의 대전제
2.   AJAX
3.   웹 소켓
4.   Node.js
5.   Java script
HTML5 표준에 쉽고 강력한 ‘웹 소켓’이라는 규약(?)이 정해지게 됐다.
개인적으로 HTML5 다른 기능도 멋지지만   웹소켓이 짱이다.
HTML5가 간달프라면 웹소켓은 간달프의 지팡이 정도랄까.
(사실 발표자가 네트워크 프로그래머라서 그렇슴)
http://caniuse.com/#search=socket

Web Sockets - 아직 표준화 작업 진행 중(draft)

웹 어플리케이션을 위한 양방향 통신 기법.
기존의 Tcp 소켓기반 S/C 통신처럼 웹 app을 작성할 수 있다.
인터페이스도 TCP 서버 짜오던 개발자로서 늘 작업하던 방식들과 매우 흡사하다.
기쁘지 아니할 수가 없다.
클라이언트의 경우,
웹소켓을 지원하는 브라우저라면 자바 스크립트에서 생성자를 호출해
소켓을 만들어 바로 사용하면 된다.

서버의 경우,
• pywebsocket : http://code.google.com/p/pywebsocket/
• phpwebsocket : http://code.google.com/p/phpwebsocket/
• jWebSocket : http://jwebsocket.org/
• web-socket-ruby : https://github.com/gimite/web-socket-ruby
• socket.io-node : https://github.com/learnBoost/Socket.io-node
… 등등 다수의 오픈 소스 모듈 중 선택해 구축할 수 있다.

IIS에서 웹소켓 사용할 수 있는지 혹시 아시는 분?
MS가 html5의 대응에는 매우 굼뜬 것 같네요…
http://sideeffect.kr:8001/


동작하는 예제 중 Node.js의 Socket.IO를 이용한
‘아웃 사이더’ 님의 PT를 한 번 보자.
1부. ‘웹 소켓’ 요약

웹을 기반으로 뭔가 멋있는 걸 만들어 내기가 원래는 참 힘들었다.

그러다 5~6년쯤 전 Ajax, Comet 의 등장으로 웹은 훨씬 Rich해 졌지만

다소 변칙적인 응용과 기법들로 몇몇 아쉬운 점들이 남아있었다.


이제 HTML5의 웹소켓을 통해

더욱 심플하고 강력한 실시간 통신이 가능해 질 것이다.


                                     2부에 계속...

More Related Content

What's hot

Amazon S3 이미지 온디맨드 리사이징을 통한 70% 서버 비용 줄이기 - AWS Summit Seoul 2017
Amazon S3 이미지 온디맨드 리사이징을 통한 70% 서버 비용 줄이기 - AWS Summit Seoul 2017Amazon S3 이미지 온디맨드 리사이징을 통한 70% 서버 비용 줄이기 - AWS Summit Seoul 2017
Amazon S3 이미지 온디맨드 리사이징을 통한 70% 서버 비용 줄이기 - AWS Summit Seoul 2017
Amazon Web Services Korea
 
10월 웨비나 - AWS에서 Active Directory 구축 및 연동 옵션 살펴보기 (김용우 솔루션즈 아키텍트)
10월 웨비나 - AWS에서 Active Directory 구축 및 연동 옵션 살펴보기 (김용우 솔루션즈 아키텍트)10월 웨비나 - AWS에서 Active Directory 구축 및 연동 옵션 살펴보기 (김용우 솔루션즈 아키텍트)
10월 웨비나 - AWS에서 Active Directory 구축 및 연동 옵션 살펴보기 (김용우 솔루션즈 아키텍트)
Amazon Web Services Korea
 
AWS 고객이 주로 겪는 운영 이슈에 대한 해법-AWS Summit Seoul 2017
AWS 고객이 주로 겪는 운영 이슈에 대한 해법-AWS Summit Seoul 2017AWS 고객이 주로 겪는 운영 이슈에 대한 해법-AWS Summit Seoul 2017
AWS 고객이 주로 겪는 운영 이슈에 대한 해법-AWS Summit Seoul 2017
Amazon Web Services Korea
 

What's hot (20)

AEM GEMs Session Oak Lucene Indexes
AEM GEMs Session Oak Lucene IndexesAEM GEMs Session Oak Lucene Indexes
AEM GEMs Session Oak Lucene Indexes
 
DynamoDB의 안과밖 - 정민영 (비트패킹 컴퍼니)
DynamoDB의 안과밖 - 정민영 (비트패킹 컴퍼니)DynamoDB의 안과밖 - 정민영 (비트패킹 컴퍼니)
DynamoDB의 안과밖 - 정민영 (비트패킹 컴퍼니)
 
[애플리케이션 현대화 및 개발] 클라우드를 통한 현대적 애플리케이션 디자인 및 구축 패턴 - 윤석찬, AWS 수석 테크 에반젤리스트
[애플리케이션 현대화 및 개발] 클라우드를 통한 현대적 애플리케이션 디자인 및 구축 패턴 - 윤석찬, AWS 수석 테크 에반젤리스트[애플리케이션 현대화 및 개발] 클라우드를 통한 현대적 애플리케이션 디자인 및 구축 패턴 - 윤석찬, AWS 수석 테크 에반젤리스트
[애플리케이션 현대화 및 개발] 클라우드를 통한 현대적 애플리케이션 디자인 및 구축 패턴 - 윤석찬, AWS 수석 테크 에반젤리스트
 
디지털 해적들로부터 영상 콘텐츠 보호하기 – 황윤상 AWS 솔루션즈 아키텍트, 김준호 잉카엔트웍스 매니저:: AWS Cloud Week ...
디지털 해적들로부터 영상 콘텐츠 보호하기 –  황윤상 AWS 솔루션즈 아키텍트, 김준호 잉카엔트웍스 매니저:: AWS Cloud Week ...디지털 해적들로부터 영상 콘텐츠 보호하기 –  황윤상 AWS 솔루션즈 아키텍트, 김준호 잉카엔트웍스 매니저:: AWS Cloud Week ...
디지털 해적들로부터 영상 콘텐츠 보호하기 – 황윤상 AWS 솔루션즈 아키텍트, 김준호 잉카엔트웍스 매니저:: AWS Cloud Week ...
 
Amazon ECS Deep Dive
Amazon ECS Deep DiveAmazon ECS Deep Dive
Amazon ECS Deep Dive
 
쿠알못이 Amazon EKS로 안정적인 서비스 운영하기 - 최용호(넥슨코리아) :: AWS Community Day 2020
쿠알못이 Amazon EKS로 안정적인 서비스 운영하기 - 최용호(넥슨코리아) :: AWS Community Day 2020쿠알못이 Amazon EKS로 안정적인 서비스 운영하기 - 최용호(넥슨코리아) :: AWS Community Day 2020
쿠알못이 Amazon EKS로 안정적인 서비스 운영하기 - 최용호(넥슨코리아) :: AWS Community Day 2020
 
Amazon S3 이미지 온디맨드 리사이징을 통한 70% 서버 비용 줄이기 - AWS Summit Seoul 2017
Amazon S3 이미지 온디맨드 리사이징을 통한 70% 서버 비용 줄이기 - AWS Summit Seoul 2017Amazon S3 이미지 온디맨드 리사이징을 통한 70% 서버 비용 줄이기 - AWS Summit Seoul 2017
Amazon S3 이미지 온디맨드 리사이징을 통한 70% 서버 비용 줄이기 - AWS Summit Seoul 2017
 
IaC로 AWS인프라 관리하기 - 이진성 (AUSG) :: AWS Community Day Online 2021
IaC로 AWS인프라 관리하기 - 이진성 (AUSG) :: AWS Community Day Online 2021IaC로 AWS인프라 관리하기 - 이진성 (AUSG) :: AWS Community Day Online 2021
IaC로 AWS인프라 관리하기 - 이진성 (AUSG) :: AWS Community Day Online 2021
 
AWS Lambda를 기반으로한 실시간 빅테이터 처리하기
AWS Lambda를 기반으로한 실시간 빅테이터 처리하기AWS Lambda를 기반으로한 실시간 빅테이터 처리하기
AWS Lambda를 기반으로한 실시간 빅테이터 처리하기
 
AWS Builders - Industry Edition: DevSecOps on AWS - 시작은 IAM 부터
AWS Builders - Industry Edition: DevSecOps on AWS - 시작은 IAM 부터AWS Builders - Industry Edition: DevSecOps on AWS - 시작은 IAM 부터
AWS Builders - Industry Edition: DevSecOps on AWS - 시작은 IAM 부터
 
AWS Control Tower를 통한 클라우드 보안 및 거버넌스 설계 - 김학민 :: AWS 클라우드 마이그레이션 온라인
AWS Control Tower를 통한 클라우드 보안 및 거버넌스 설계 - 김학민 :: AWS 클라우드 마이그레이션 온라인AWS Control Tower를 통한 클라우드 보안 및 거버넌스 설계 - 김학민 :: AWS 클라우드 마이그레이션 온라인
AWS Control Tower를 통한 클라우드 보안 및 거버넌스 설계 - 김학민 :: AWS 클라우드 마이그레이션 온라인
 
[AWS Dev Day] 실습워크샵 | Amazon EKS 핸즈온 워크샵
 [AWS Dev Day] 실습워크샵 | Amazon EKS 핸즈온 워크샵 [AWS Dev Day] 실습워크샵 | Amazon EKS 핸즈온 워크샵
[AWS Dev Day] 실습워크샵 | Amazon EKS 핸즈온 워크샵
 
10월 웨비나 - AWS에서 Active Directory 구축 및 연동 옵션 살펴보기 (김용우 솔루션즈 아키텍트)
10월 웨비나 - AWS에서 Active Directory 구축 및 연동 옵션 살펴보기 (김용우 솔루션즈 아키텍트)10월 웨비나 - AWS에서 Active Directory 구축 및 연동 옵션 살펴보기 (김용우 솔루션즈 아키텍트)
10월 웨비나 - AWS에서 Active Directory 구축 및 연동 옵션 살펴보기 (김용우 솔루션즈 아키텍트)
 
하이브리드앱 아키텍쳐 및 개발 사례
하이브리드앱 아키텍쳐 및 개발 사례하이브리드앱 아키텍쳐 및 개발 사례
하이브리드앱 아키텍쳐 및 개발 사례
 
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개
 
AWS 고객이 주로 겪는 운영 이슈에 대한 해법-AWS Summit Seoul 2017
AWS 고객이 주로 겪는 운영 이슈에 대한 해법-AWS Summit Seoul 2017AWS 고객이 주로 겪는 운영 이슈에 대한 해법-AWS Summit Seoul 2017
AWS 고객이 주로 겪는 운영 이슈에 대한 해법-AWS Summit Seoul 2017
 
Amazon Timestream 시계열 데이터 전용 DB 소개 :: 변규현 - AWS Community Day 2019
Amazon Timestream 시계열 데이터 전용 DB 소개 :: 변규현 - AWS Community Day 2019Amazon Timestream 시계열 데이터 전용 DB 소개 :: 변규현 - AWS Community Day 2019
Amazon Timestream 시계열 데이터 전용 DB 소개 :: 변규현 - AWS Community Day 2019
 
ECS to EKS 마이그레이션 경험기 - 유용환(Superb AI) :: AWS Community Day Online 2021
ECS to EKS 마이그레이션 경험기 - 유용환(Superb AI) :: AWS Community Day Online 2021ECS to EKS 마이그레이션 경험기 - 유용환(Superb AI) :: AWS Community Day Online 2021
ECS to EKS 마이그레이션 경험기 - 유용환(Superb AI) :: AWS Community Day Online 2021
 
AWS January 2016 Webinar Series - Managing your Infrastructure as Code
AWS January 2016 Webinar Series - Managing your Infrastructure as CodeAWS January 2016 Webinar Series - Managing your Infrastructure as Code
AWS January 2016 Webinar Series - Managing your Infrastructure as Code
 
공개소프트웨어 기반 주요 클라우드 전환 사례
공개소프트웨어 기반 주요 클라우드 전환 사례공개소프트웨어 기반 주요 클라우드 전환 사례
공개소프트웨어 기반 주요 클라우드 전환 사례
 

Similar to [111015/아꿈사] HTML5를 여행하는 비(非) 웹 개발자를 위한 안내서 - 1부 웹소켓.

Mozilla 오픈 웹 모바일 플랫폼 (2012)
Mozilla 오픈 웹 모바일 플랫폼 (2012)Mozilla 오픈 웹 모바일 플랫폼 (2012)
Mozilla 오픈 웹 모바일 플랫폼 (2012)
Channy Yun
 
이승재, 실시간 HTTP 양방향 통신, NDC2012
이승재, 실시간 HTTP 양방향 통신, NDC2012이승재, 실시간 HTTP 양방향 통신, NDC2012
이승재, 실시간 HTTP 양방향 통신, NDC2012
devCAT Studio, NEXON
 
차세대 웹비즈니스를 위한 "HTML5"
차세대 웹비즈니스를 위한 "HTML5"차세대 웹비즈니스를 위한 "HTML5"
차세대 웹비즈니스를 위한 "HTML5"
Changhwan Yi
 
WebKit at the Future Web Forum 2010
WebKit at the Future Web Forum 2010WebKit at the Future Web Forum 2010
WebKit at the Future Web Forum 2010
Joone Hur
 
JQuery를 이용하여 웹 위젯 작성하기_(주)시스포유아이앤씨
JQuery를 이용하여 웹 위젯 작성하기_(주)시스포유아이앤씨JQuery를 이용하여 웹 위젯 작성하기_(주)시스포유아이앤씨
JQuery를 이용하여 웹 위젯 작성하기_(주)시스포유아이앤씨
sys4u
 
Javascript everywhere - Node.js | Devon 2012
Javascript everywhere - Node.js | Devon 2012Javascript everywhere - Node.js | Devon 2012
Javascript everywhere - Node.js | Devon 2012
Daum DNA
 
모바일 웹플랫폼 기술 동향
모바일 웹플랫폼 기술 동향모바일 웹플랫폼 기술 동향
모바일 웹플랫폼 기술 동향
Jong Jin Hong
 

Similar to [111015/아꿈사] HTML5를 여행하는 비(非) 웹 개발자를 위한 안내서 - 1부 웹소켓. (20)

[111217 아꿈사연말모임] 웹소켓과온라인게임
[111217 아꿈사연말모임] 웹소켓과온라인게임[111217 아꿈사연말모임] 웹소켓과온라인게임
[111217 아꿈사연말모임] 웹소켓과온라인게임
 
Mozilla 오픈 웹 모바일 플랫폼 (2012)
Mozilla 오픈 웹 모바일 플랫폼 (2012)Mozilla 오픈 웹 모바일 플랫폼 (2012)
Mozilla 오픈 웹 모바일 플랫폼 (2012)
 
이승재, 실시간 HTTP 양방향 통신, NDC2012
이승재, 실시간 HTTP 양방향 통신, NDC2012이승재, 실시간 HTTP 양방향 통신, NDC2012
이승재, 실시간 HTTP 양방향 통신, NDC2012
 
웹 소프트웨어 시대의 새로운 롤(role) 모델, 자바스크립트
웹 소프트웨어 시대의 새로운 롤(role) 모델, 자바스크립트웹 소프트웨어 시대의 새로운 롤(role) 모델, 자바스크립트
웹 소프트웨어 시대의 새로운 롤(role) 모델, 자바스크립트
 
차세대 모바일 웹 UI/UX 기술 및 표준화 동향 (기조발표)
차세대 모바일 웹 UI/UX 기술 및 표준화 동향 (기조발표)차세대 모바일 웹 UI/UX 기술 및 표준화 동향 (기조발표)
차세대 모바일 웹 UI/UX 기술 및 표준화 동향 (기조발표)
 
차세대 웹비즈니스를 위한 "HTML5"
차세대 웹비즈니스를 위한 "HTML5"차세대 웹비즈니스를 위한 "HTML5"
차세대 웹비즈니스를 위한 "HTML5"
 
발표자료
발표자료발표자료
발표자료
 
WebKit at the Future Web Forum 2010
WebKit at the Future Web Forum 2010WebKit at the Future Web Forum 2010
WebKit at the Future Web Forum 2010
 
[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...
 
JQuery를 이용하여 웹 위젯 작성하기_(주)시스포유아이앤씨
JQuery를 이용하여 웹 위젯 작성하기_(주)시스포유아이앤씨JQuery를 이용하여 웹 위젯 작성하기_(주)시스포유아이앤씨
JQuery를 이용하여 웹 위젯 작성하기_(주)시스포유아이앤씨
 
하이브리드 앱(Hybrid App)
하이브리드 앱(Hybrid App)하이브리드 앱(Hybrid App)
하이브리드 앱(Hybrid App)
 
프론트엔드 개발자의 자바스크립트
프론트엔드 개발자의 자바스크립트 프론트엔드 개발자의 자바스크립트
프론트엔드 개발자의 자바스크립트
 
어그로월드 Season1 - Aggro World season 1
어그로월드 Season1 - Aggro World season 1어그로월드 Season1 - Aggro World season 1
어그로월드 Season1 - Aggro World season 1
 
NAVER TECH CONCERT_FE2019_빠르게 훑어보는 웹 개발 트렌드
NAVER TECH CONCERT_FE2019_빠르게 훑어보는 웹 개발 트렌드NAVER TECH CONCERT_FE2019_빠르게 훑어보는 웹 개발 트렌드
NAVER TECH CONCERT_FE2019_빠르게 훑어보는 웹 개발 트렌드
 
HTML5 Tutorial(Korean)
HTML5 Tutorial(Korean)HTML5 Tutorial(Korean)
HTML5 Tutorial(Korean)
 
[121]네이버 효과툰 구현 이야기
[121]네이버 효과툰 구현 이야기[121]네이버 효과툰 구현 이야기
[121]네이버 효과툰 구현 이야기
 
01.모바일 프레임워크 이론
01.모바일 프레임워크 이론01.모바일 프레임워크 이론
01.모바일 프레임워크 이론
 
[리뷰] 풀스택 개발자를 위한 MEAM 스택 입문
[리뷰] 풀스택 개발자를 위한 MEAM 스택 입문[리뷰] 풀스택 개발자를 위한 MEAM 스택 입문
[리뷰] 풀스택 개발자를 위한 MEAM 스택 입문
 
Javascript everywhere - Node.js | Devon 2012
Javascript everywhere - Node.js | Devon 2012Javascript everywhere - Node.js | Devon 2012
Javascript everywhere - Node.js | Devon 2012
 
모바일 웹플랫폼 기술 동향
모바일 웹플랫폼 기술 동향모바일 웹플랫폼 기술 동향
모바일 웹플랫폼 기술 동향
 

More from sung ki choi

[아꿈사/111105] html5 9장 클라이언트측 데이터로 작업하기
[아꿈사/111105] html5 9장 클라이언트측 데이터로 작업하기[아꿈사/111105] html5 9장 클라이언트측 데이터로 작업하기
[아꿈사/111105] html5 9장 클라이언트측 데이터로 작업하기
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
 
Touch Ux With Win32
Touch Ux With Win32Touch Ux With Win32
Touch Ux With Win32
sung ki choi
 

More from sung ki choi (15)

[아꿈사] 게임 기초 수학 물리 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장 유저 모드에서의 스레드 동기화
 
[아꿈사/111105] html5 9장 클라이언트측 데이터로 작업하기
[아꿈사/111105] html5 9장 클라이언트측 데이터로 작업하기[아꿈사/111105] html5 9장 클라이언트측 데이터로 작업하기
[아꿈사/111105] html5 9장 클라이언트측 데이터로 작업하기
 
[아꿈사/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
 

[111015/아꿈사] HTML5를 여행하는 비(非) 웹 개발자를 위한 안내서 - 1부 웹소켓.

  • 1. HTML5를 여행하는 비(非) 웹 개발자를 위한 안내서 The Non – Web Programmer’s Guide to the HTML5 1부. 웹 소켓 아꿈사 http://cafe.naver.com/architect1 최성기 florist.sk@gmail.com
  • 2. 1. HTTP의 대전제 2. AJAX 3. 웹 소켓 4. Node.js 5. Java script 원래는 Node.js에 대해서 이야기 하려고 PT 배경색도 로고 이미지 바탕색이랑 맞춰두고 시작한 pt였으나 준비 부족으로 결국 Node.js는 얘기도 못 꺼내고 웹소켓 까지만 준비되었습니다...
  • 3. 1. HTTP의 대전제 2. AJAX 3. 웹 소켓 4. Node.js 5. Java script
  • 4. HTTP Hyper-Text Transfer Protocol 아주 멋진super보다 더 멋진 hyper 텍스트를 전송하려고 만들어낸 통신 규약. 서버가 Html로 만들어진 문서(디자인된 문서)를 유저에게 잘 보여주는 것이 이 프로토콜의 최초 목적이었다. 이전 세대에는 터미널 창에서 오직 텍스트만 주고 받던 통신 시대였으니 차세대 통신 규약으로의 적절한 설정이었다.
  • 5. 대.전.제 http 프로토콜을 이용한 통신의 대전제: 클라이언트는 원하는 페이지를 url로 요청하고, 서버는 그 페이지를 보내준다. http 클라이언트(≒웹 브라우저)는 url을 보내고 결과를 받아오는 게 유일한 존재목적이고, 그 외 다른 것은 할 필요도 없었고, 할 수도 없었다. 즉, 브라우저는 서버와 통신하려면 다른 페이지로 이동해야 하는 대전제를 가진다. 근데 http는 점점 대중화되고, 페이지 보는 거 말고 다른 게 하고 싶어 졌다. Ex) 이 사이트에 가입하고 싶어. ‘ok’버튼을 눌렀을 때 가입시켜줘.
  • 6. 사이트 회원가입? 사진이나 동영상 올리기? 남의 글에 악플 달기? 클라이언트가 ‘페이지 읽기(이동하기)’가 아닌 다른 작업을 하고 싶을 땐 클라이언트가 할 수 있는 유일한 스킬인 ‘서버에 원하는 url 쏘기’를 시전하면서 이때 부가적인 정보를 붙이도록 했다. http://XXX.com/join_member.htm?id=florist&name=최성기&gender=male...[1] [1] Url에 정보를 붙여서 보내는 GET 방식 이외에, 내부적으로 전송하는 POST 방식이 있다. (쉬운 설명을 위해 간소화.)
  • 7. 철수는 XXX 사이트에 회원 가입을 했을 때 한 페이지 가득한 환영의 인사를 보고 기분이 좋았다. ‘날 위해 새 페이지를 보여줘 가면서까지 환영해 주고 있구나! 난 사랑 받기 위해 태어난 사람이야!’ 웰컴! 격하게 환영합니다. Join_form.htm Join_result.htm 하지만 그것은 불편한 진실이었다. 사실 http로는 무언가 새 페이지를 요청하지 않고서는 회원가입 따위의 요청을 서버에 날릴 수가 없었다. (과연… 철수는 사랑 받기 위해 태어난 사람일까…?)
  • 8. 그러고 보니 아이디 중복체크를 할 때도 그랬다. 서버에게 중복 검사를 요청하기 위해선 새 페이지를 요청해야만 하는데, 회원정보 작성 중에 페이지를 이동할 수 없기 때문에 새로 요청한 페이지를 팝업창으로 띄웠던 것이다. (요즘 사이트들은 대부분 팝업창 없이 검사 가능. Ajax를 이용) 이미지 출처 : http://jinzza.net/IdCheckHowTo.html
  • 9. 하드웨어 드라이버 다운로드 페이지 제품종류 제품시리즈 모델명 메인보드 GeForce GeForce 9800 GT 그래픽카드 nForce GeForce 9800 GX2 사운드카드 3D Vision GeForce 9600 GT … … … 다른 예를 하나 더 들어보자. 여태 살면서 한 번쯤은 다 겪어봤을 만한 하드웨어 드라이버 다운로드 폼 구성은 다른 페이지로 이동하지 않으면서도 서버에서 모델 정보를 받아오는 것처럼 보이지만 이는 눈속임에 불과하다.
  • 10. 하드웨어 드라이버 다운로드 페이지 제품종류 제품시리즈 모델명 메인보드 GeForce GeForce 9800 GT 그래픽카드 nForce GeForce 9800 GX2 사운드카드 3D Vision GeForce 9600 GT … … … graphic_serize_list.htm geforce_model_list.htm 실은 iframe이라는 태그로 페이지에 구멍을 뚫어놓고, 그 구멍에 결국 유일하게 할 줄 아는 [2] ‘새로운 url 페이지 열기’ 스킬을 시전한 것 뿐이다. [2] 물론 오늘날의 웹은 가능하다. 지금은 원시적인 기법에 대해 이야기 하고 있다.
  • 11. 하드웨어 드라이버 다운로드 페이지 제품종류 메인보드 그래픽카드 사운드카드 … 제품시리즈 모델명 GeForce … 실상은 이렇다. GeForce 9800 GT nForce GeForce 9800 GX2 3D Vision GeForce 9600 GT … … graphic_serize_list.htm geforce_model_list.htm
  • 12. 브라우저가 웹서버에게 뭔가를 요청하려면 페이지를 이동하지 않고서는 요청할 방법이 없었다. 이런 제한적인 환경 때문에, 웹에서 무언가 다양한 기능을 하게 해주는 꼼수들과 대체기법들이 유행했다. 플래시를 집어넣어 몽땅 플래시 기반으로 사이트를 만들기도 하고 특히 한국에서는 뭘 좀 만들어야지 싶으면 ActiveX를 얹어서 웹도 아니고 애플리케이션도 아닌 어정쩡한 결과물들이 홍수처럼 흘러 넘쳤다.
  • 13. 그러던 한 편에선구글 이란 이름의 괴집단이 꾸준히 세력을 키워가고 있었다. 구글톡, 지메일, 구글그룹, 구글문서, 구글리더, 구글지도 등 신기한 서비스들을 연이어 내놓았는데, 구글의 서비스는 웹페이지 같지 않게 동적이고 자연스러웠다. ‘짤각’ 거리는 새로고침 소리도 들리지 않았는데도 웹페이지는 자유롭게 변환되었고 사람들은 ‘이런 게 웹에서 된단 말이야?’ 라고 말했다. 게다가 구글은, 이 모든걸 ActiveX 없이 해냈다.
  • 14. 1. HTTP의 대전제 2. AJAX 3. 웹 소켓 4. Node.js 5. Java script
  • 15. AJAX Asynchronous Javascript And Xml 구글이 사용한 기법은 Ajax라는 기법이었다. 자바 스크립트와 xml을 이용한 비동기 통신. Konami, 1987 2005년 경 부터 점차 대중화 되면서 쓰이기 시작했고[3] 오늘날 Ruby, JQuery 등을 이용한 대중적인 웹 개발의 기반에도 페이지 이동 없는 통신의 근간을 이루는 기술이 되었다. Ajax가 쓰이기 시작하면서 웹 페이지들은 페이지 이동 없이도 서버와 통신을 했고 페이지에 구멍을 뚫지 않아도 특정 영역만 업데이트하거나 조작할 수 있게 됐다. [3] Ajax 기법은 2005년부터 대중화되기 시작했지만, 사실 예전부터 존재하던 기법이다. 거의 알려지지 않았던 테크닉이었고, 이전엔 Ajax라는 이름도 없었다.
  • 16. 웹 브라우저에 쓰이던 자바 스크립트에는 사실 XMLHttpRequest라는 API가 있었다. (IE 기준 5.0부터 지원) http://dna.daum.net/TR/XMLHttpRequest/ http://ko.wikipedia.org/wiki/Ajax 이녀석을 통해 url 이동이 아닌 임의 요청을 보내고 응답을 받을 수 있었는데 그 동안엔 있는 줄도 몰랐고, 또 쓰면 이렇게 멋있어질 줄 몰랐겠지. 아무튼 구글 및 기타 선두 진영들[4]이 Ajax라는 이름을 붙여 유행시켰고 웹페이지는 이제 이전과 비교할 수 없는 다양한 표현력을 갖게 되었다. 일부 책에서는 이런 비동기 방식을 ‘XHR을 이용한 통신’이라고 부르기도 한다. [4] 사실 구글밖에 모른다...
  • 17. 이미지 출처 : http://goo.gl/XEey5 이젠 회원 가입할 때 버튼이나 팝업창 없이 입력 focus만 떠나면 바로 웹서버와 통신해서 중복체크를 할 수 있고
  • 18. 검색어 추천 기능 검색창에 글씨가 한자씩 타이핑 될 때마다 웹서버에 단어를 보내 추천 검색어 리스트를 보여줄 수도 있고
  • 19. 구글 지도 마우스 입력에 따라 브라우저에서 맵을 늘였다 줄였다… 위성 사진을 보였다가 지도를 보였다가… 이런 건 도대체 어떻게 하는 거야 웹 브라우저만 가지고도 다양한 표현이 가능해졌다.
  • 20. Ajax의 사용으로 인해 Http 통신을 할 때의 대전제였던 ‘페이지 갱신’이라는 제약은 이제 무의미해진 옛날 말이 되었다. Ajax를 이용한 웹사이트는 나날이 늘어났고 데스크탑 어플리케이션으로 구현됐던 상당수 프로그램이 차츰 웹 기반으로 대체되기 시작했다. Ajax의 표현력에 반한 철수가 어느 날 MSN 메신저를 설치할 줄 모르는 영희를 위해 웹 메신저를 만들기로 결심한다.
  • 21. 웹 기반 메신저 통신 예제 : 구글톡이 등장하기 이전에도 ActiveX없이 동작하는 웹 채팅은 존재했다. ‘별로 어렵지 않을 거야. Ajax는 짱 이니까.’ 철수는 부푼 기대감을 안고 개발을 하기 시작했는데 얼마 안 가서 난관에 부딪혔다.
  • 22. 요청 응답 요청 응답 웹 브라우저가 XMLHttpRequest를 이용해 서버로 먼저 요청을 날리고 서버가 이에 대한 응답을 보내주는 것 까지는 크게 문제가 없었지만
  • 23. 요청 응답? 요청 응답? 서버가 요청 없는 브라우저에게 먼저 통신을 시작할 수 있는 방법이 없었다. 서버는 응답밖에 할 수 없었다. 자유로운 양 방향 통신이 불가능한 반 쪽짜리 통신이었다.
  • 24. 출처 : 마이크로 소프트웨어 2010년 11월호 ‘모바일 실시간 그림판 구현’中..
  • 25. 출판사 리뷰 中… …Ajax 1.0은 시작에 불과했다. 이제 근본적인 변 화를 몰고 오는 Ajax 2.0, Comet이 온다! Ajax가 웹에 불러온 변화들을 기억할 것이다. Ajax로 인해 더욱 풍성해진 웹은 더욱 사용자에 가깝게 다가설 수 있었고, 결국 Web 2.0이라는 커다란 패러다임의 변화를 이끌 수 있었다. Comet은 Ajax가 보여주었던 변화에서 한걸음 더 나아가는 기술이다. 클라이얶트가 요청하기 전에 서버가 자유롭게 메시지를 보낼 수 있고, 그 결과 양측의 컴퓨터가 웹을 통해 자유롭게 대 화할 수 있는 진정한 대화형 웹 애플리케이션의 시대, Comet이 만들어갈 새로운 웹의 모습이다. 하지만 초큼 어렵다.
  • 26. 요즈음의 웹사이트에서 볼 수 있는 페이지 갱신 없이 이루어지는 실시간 통신들은 모두 Ajax와 Comet에 바탕을 두고 있다. (IE에서도 잘 동작하는 것들은 모두 Ajax라고 보면 된다.) Comet을 통해 양방향 실시간 통신이 가능해 졌지만 다소 억지스러운 테크닉은 개념을 초큼 복잡하게 만들었다. 웹은 아직도 무섭게 성장하고 있고 수요는 점점 늘어가고 있다. 그러는 와중에 HTML는 5.0 표준을 만들어 가고 있는 중인데,
  • 27. 1. HTTP의 대전제 2. AJAX 3. 웹 소켓 4. Node.js 5. Java script
  • 28. HTML5 표준에 쉽고 강력한 ‘웹 소켓’이라는 규약(?)이 정해지게 됐다. 개인적으로 HTML5 다른 기능도 멋지지만 웹소켓이 짱이다. HTML5가 간달프라면 웹소켓은 간달프의 지팡이 정도랄까. (사실 발표자가 네트워크 프로그래머라서 그렇슴)
  • 29. http://caniuse.com/#search=socket Web Sockets - 아직 표준화 작업 진행 중(draft) 웹 어플리케이션을 위한 양방향 통신 기법. 기존의 Tcp 소켓기반 S/C 통신처럼 웹 app을 작성할 수 있다. 인터페이스도 TCP 서버 짜오던 개발자로서 늘 작업하던 방식들과 매우 흡사하다. 기쁘지 아니할 수가 없다.
  • 30. 클라이언트의 경우, 웹소켓을 지원하는 브라우저라면 자바 스크립트에서 생성자를 호출해 소켓을 만들어 바로 사용하면 된다. 서버의 경우, • pywebsocket : http://code.google.com/p/pywebsocket/ • phpwebsocket : http://code.google.com/p/phpwebsocket/ • jWebSocket : http://jwebsocket.org/ • web-socket-ruby : https://github.com/gimite/web-socket-ruby • socket.io-node : https://github.com/learnBoost/Socket.io-node … 등등 다수의 오픈 소스 모듈 중 선택해 구축할 수 있다. IIS에서 웹소켓 사용할 수 있는지 혹시 아시는 분? MS가 html5의 대응에는 매우 굼뜬 것 같네요…
  • 31. http://sideeffect.kr:8001/ 동작하는 예제 중 Node.js의 Socket.IO를 이용한 ‘아웃 사이더’ 님의 PT를 한 번 보자.
  • 32. 1부. ‘웹 소켓’ 요약 웹을 기반으로 뭔가 멋있는 걸 만들어 내기가 원래는 참 힘들었다. 그러다 5~6년쯤 전 Ajax, Comet 의 등장으로 웹은 훨씬 Rich해 졌지만 다소 변칙적인 응용과 기법들로 몇몇 아쉬운 점들이 남아있었다. 이제 HTML5의 웹소켓을 통해 더욱 심플하고 강력한 실시간 통신이 가능해 질 것이다. 2부에 계속...