socket.io 예제

참조,이 응용 프로그램은 코딩정말 쉽습니다. WebSockets의 존재를 알고 socket.io 전에, 나는 응용 프로그램의이 종류는 코딩정말 어렵다 생각! 응용 프로그램 내에서 문제를 분리하기 위해(예: 모듈당 또는 사용 권한 기반) Socket.IO 여러 네임스페이스를 만들 수 있습니다. . 클라이언트의 독립 실행형 빌드는 기본적으로 /socket.io/socket.io.js 서버에서 노출됩니다. 예를 들어 채팅을 상상해 보십시오. 클라이언트 A는 메시지를 작성하고 서버에 보냅니다. 다른 클라이언트가 메시지를 볼 수 있도록 브로드캐스트해야 합니다. Socket.io 웹 소켓을 매우 쉽게 사용할 수 있습니다. 또한 모든 브라우저가 WebSocket을 생성하지 않기 때문에 클라이언트의 브라우저에서 관리하는 경우 다른 동기화된 통신 기술을 사용할 수 있습니다. socket.io 웹 사이트의 브라우저 지원 섹션을 살펴보십시오. socket.io 각 클라이언트에 가장 적합한 실시간 통신 방법을 결정하는 것을 볼 수 있습니다: 코드를 시작하기 전에 socket.io 대한 아이디어를 신속하게 설명하고 싶습니다. 그것은 우리가 많은 것들을 단순화 할 수있는 라이브러리이지만, 당신은 `마법`이라고 생각하는 것은 틀렸을 것입니다.

그러나 socket.io 실시간 통신을 허용하는 여러 가지 기술에 기반을 두고 있습니다(그리고 이들 중 일부는 수년 동안 계속되어 왔습니다). 가장 잘 알려진 가장 최근의 것은 WebSocket입니다. 각 클라이언트에 대한 정보(예: 사용자 이름)를 기억합니다. 이를 위해서는 세션 변수가 필요합니다. 이전의 모든 예제에서는 하나의 서버와 하나의 클라이언트로 작업했습니다. 실제로 Node.js 응용 프로그램에 연결된 클라이언트가 여러 개 있을 것입니다(또는 적어도 그렇게 되기를 바랍니다!). 로컬로 시뮬레이션하려면 http://localhost:8080 페이지에서 두 개의 탭을 모두 열기만 하면 됩니다. 서버가 연결된 2개의 다른 클라이언트를 볼 수 있습니다. 첫째, 주먹 인스턴스에서 클라이언트에서 socket.io.js 파일을 검색합니다. 이것은 자동으로 socket.io 모듈을 통해 Node.js 서버에 의해 제공 됩니다 (그래서 파일에 대 한 경로 무작위로 선택 되지 않습니다): 예를 들어, 브라우저 WebSocket을 지원 하지 않습니다 하지만 플래시 설치, socket.io 실제로 통신을 수행 하기 위해 플래시를 통해 이동 합니다. 시간. 그렇지 않은 경우 AJAX Long Polling과 같은 다른 기술을 사용할 수 있습니다 (클라이언트는 가장 깔끔하거나 가장 효율적인 방법이 아닌 업데이트가 있는지 서버에 계속 요청합니다) 또는 로드하는 보이지 않는 iframe을 기반으로하는 “영원히 Iframe”을 사용할 수 있습니다.

점진적으로 서버에서 업데이트를 검색할 수 있습니다. 좋은 소식은 이러한 기술의 작동 방식에 대한 세부 정보를 알 필요가 없다는 것입니다. 그러나, 나는 적어도 그들의 이름과 그들이 존재하는 것을 아는 것이 좋다고 생각합니다. 사용자가 응용 프로그램에 연결하면 “익명”과 같은 기본 사용자 이름을 설정합니다. 이렇게하려면 서버 측 (app.js)에 가서 소켓에 키를 추가해야합니다. 실제로 소켓은 서버에 연결된 각 클라이언트를 나타냅니다. 특정 응용 프로그램에 대해 내보낸 모든 메시지와 이벤트를 제어할 수 있는 경우 기본 /네임스페이스를 사용하여 작동합니다. 타사 코드를 활용하거나 다른 사용자와 공유할 코드를 생성하려는 경우 socket.io 소켓이름을 지정하는 방법을 제공합니다. 이러한 모든 다른 기술 덕분에, socket.io 브라우저의 큰 숫자를 지원, 심지어 오래 된 것 들: Node.js에 대 한 많은 다른 websocket 라이브러리의 우리에 게 사용할 수, 그것은 가장 인기 있는 것 같기 때문에이 문서 에 걸쳐 socket.io 사용 하기로. 그리고, 내 의견으로는, 사용하기 쉬운 것입니다. 각 라이브러리에는 고유한 API가 있지만 모두 동일한 프로토콜 위에 구축되므로 아래 코드를 사용하려는 라이브러리로 변환할 수 있으므로 유사점이 많습니다.

¡Contactanos!