전체 연결된 소켓 클라이언트 객체
개별 소켓 클라이언트 객체
io.sockets.on('connection', function (socket) {
io.sockets : 전체 연결된 소켓 클라이언트 객체
socket : 개별 소켓 클라이언트 객체
});
socket.emit('test', {test: 'aaa'});
현재 연결된 클라이언트 소켓으로 이벤트를 보냄
socket.on('test', function (data) {
console.log('data: ', data);
})
현재 연결된 클라이언트 소켓으로 이벤트 받음
이벤트 받을때 데이터 값 data 로 받음
socket.broadcast.emit('test', {test: 'aaa'});
io.sockets.emit('test', {test: 'aaa'});
io.sockets 는 전체 연결된 소켓 클라이언트 이므로 전체 소켓에 이벤트 전달
io.sockets("소켓아이디").emit("test", {test: "aaa"});
소켓아이디 값은 각 소켓에 있는 id 속성값 socket.id 각 소켓들을 구별해주는 식별자
socket.set("test", {test: "aaa"}, callback?);
socket.get("test", callback?);
socket.del("test", callback?);
socket 도 객체이기 때문에 socket.test = {test: "aaa"} 로 저장해도 되지만
set/get/del 내부도 Object.property 를 사용하며
socket 의 store를 redis 로 하게 될경우 에는 데이터를 Object 내부에 저장하는게 아니기 때문에 Object.property 로는 가져올수 없지만 set/get/del 를 사용하면 가능하기 때문에 사용
다른 클러스터 노드에서도 set/get/del를 사용하면 접근 가능
채팅방 처럼 room 을 만들어 room 안에 있는 소켓들만 이벤트를 주거나 받을수있음
socket.join("roomName"); // 룸 참여
socket.leave("roomName"); // 룸 나가기
socket.broadcast.to("roomName").emit("test", {test: "aaa"});
io.sockets.in("roomName").emit("test", {test: "aaa"});
io.sockets.manager.rooms
io.sockets.clients("roomName")