- 앞의 소스와 유사합니다. 단지 소켓 이벤트를 받는 부분에 집중해주세요 - 처음 접속했다면 socket.broadcast를 이용하여 자신을 제외한 다른 클라이언트들에게 접속 여부를 알립니다. - socket.on('disconnect') : 해당 함수로 소켓 통신이 끝났는지 확인 할 수 있습니다. 이곳에다 위와같은 작업을 추가합니다.
3. 확인
node index.js
localhost:3000
서버를 가동하고 localhost:3000으로 접속해주세요. 그리고 이후에 창을 하나더 띄워주세요
기존에 작성했던 클라이언트 코드 <script> 부분을 위와같이 추가합니다. - socket.emit() : 첫번째 변수가 key 값이 됩니다. server 소켓에서 이벤트를 감지할 경우 해당 키값으로 이벤트를 listen 합니다. 두번째 변수는 value 를 전달합니다.
- socket.io를 require 받은 후 .on 함수로 connection 이벤트를 연결합니다. - socket.io 변수로 http 객체를 전달받았습니다. - 이제 서버로 들어오는 socket연결들을 리스닝 할 수 있습니다.
2) 클라이언트 socket.io-client
<script src="/socket.io/socket.io.js"></script>
<script>
var socket = io();
</script>
- </body> 태그 이전에 위와같이 등록합니다. - io() 함수가 글로벌하게 등록되었습니다. 클라이언트에 로드되는 모든 브라우저 소켓에 작동합니다 - 만약 글로벌보다는 로컬버전으로 사용하게 하고싶다면 node_modules/socket.io-client/dist/socket.io.js연결하면 됩니다 - io() 안에 특정한 url을 등록하지 않았습니다. url을 등록하지 않았다면 자동적으로 서버 호스트로 연결합니다.
3. socket.io 실행
위의 과정을 했다면 노드서버를 다시 작동시키겠습니다.
node index.js
그리고 브라우저 창에 localhost:3000으로 접속합니다.
localhost:3000으로 접속했을때 커맨드라인에 a user connected 가 출력됬다면 소켓이 연결된 것입니다. 여러 창을 띄워볼까요?
창을 두개 띄웠더니 a user connected 가 두개 생성되었습니다.
4. socket.io 연결끊기 추가
위 상태에서 브라우저창을 닫으면 터미널에 아무것도 출력되지 않습니다. 이제 소켓연결이 끊어진것도 추가하겠습니다