Skip to content

Socket 명세

강성준 edited this page Nov 30, 2022 · 8 revisions

연결 및 유저들 정보 받기

  • ws://localhost:3333

    • 아마도 https 환경에서는 wss://localhost:3333 로 변경될 예정

    요청

    • header에 다음 필드 필수.
    { // headers 
    		authorization : {cookie.accessToken}
    		room : {URL에서 갖고온 현재 채널명(‘town’ || userId)}
    }

    응답

    • 성공시 userInitiated 이벤트 발생
    • 접속 한 유저 - 현재 접속 중인 모든 유저들 정보 불러오기
    [ // 현재 접속중인 모든 유저 정보 (자신 포함)
        {
            "id": "IZI_1Wzwhqblu0A4KA_TCrtkl4mM55Qstc_FDKMv_sY",
            "social": "naver",
            "nickname": "연어초밥",
            "characterName": "nohair",
            "iat": 1669789117,
            "exp": 1669875517,
            "x": -25,
            "y": 400,
            "direction": "right",
            "state": "wait",
            "roomName": "town"
        },
        {
            "id": "Z-NVwpPpbw7oOjHEn-CYEZ8V9nU3P9IIChz_9PuuVak",
            "social": "naver",
            "nickname": "stouter",
            "characterName": "longhair",
            "iat": 1669782828,
            "exp": 1669869228,
            "x": -25,
            "y": 400,
            "direction": "right",
            "state": "wait",
            "roomName": "town"
        }
    ]
    • userCreated 이벤트 발생
    • 내가 이미 접속한 상태에서 새로 접속한 유저 정보 불러오기
    // 방금 들어온 유저 정보
    {
        "id": "IZI_1Wzwhqblu0A4KA_TCrtkl4mM55Qstc_FDKMv_sY",
        "social": "naver",
        "nickname": "연어초밥",
        "characterName": "nohair",
        "iat": 1669789117,
        "exp": 1669875517,
        "x": -25,
        "y": 400,
        "direction": "right",
        "state": "wait",
        "roomName": "town"
    },

연결 해제

  • 다른 유저 접속 해제 시, 접속 중인 모든 유저에게 userLeaved로 유저 정보 전달

    요청

    • 없음

    응답

    • 성공시 userLeaved 이벤트 발생
    • 접속 중인 모든 유저에게 전달
    { // 방금 나간 유저 정보
        "id": "IZI_1Wzwhqblu0A4KA_TCrtkl4mM55Qstc_FDKMv_sY",
        "social": "naver",
        "nickname": "연어초밥",
        "characterName": "nohair",
        "iat": 1669789117,
        "exp": 1669875517,
        "x": -25,
        "y": 400,
        "direction": "right",
        "state": "wait",
        "roomName": "town"
    }

Move 이벤트

  • move 이벤트를 통해 서버에 움직임 전달.

    요청

    • 다음 4가지 데이터 담아서 move 이벤트 emit.
    {
    		x: number;
    		y: number;
    		direction: string;
    		state: string;
    }
    • 가능한 direction 및 state 범위 (all 소문자 권장)
    export enum directionOptions {
      LEFT = 'left',
      RIGHT = 'right',
    }
    
    export enum stateOptions {
      WAIT = 'wait',
      RUN = 'run',
      WALK = 'walk',
      ROLL = 'roll',
      JUMP = 'jump',
    }

    응답

    • 성공시 move 이벤트로 채널 내 broadcast.
    { // 해당 유저의 바뀐 위치를 포함한 유저 정보 전달
          "id": "Z-NVwpPpbw7oOjHEn-CYEZ8V9nU3P9IIChz_9PuuVak",
          "social": "naver",
          "nickname": "stouter",
          "characterName": "longhair",
          "iat": 1669782828,
          "exp": 1669869228,
          "x": -25,
          "y": 400,
          "direction": "right",
          "state": "wait",
          "roomName": "town"
    }

publicChat 이벤트

  • publicChat 이벤트를 통해 서버에 전체 채팅 전달.

  • 휘발성 채팅.

    요청

    • message 필드를 채워서 publicChat 이벤트 emit.
    {
    		message: "보낼 전체 채팅 내용"
    }

    응답

    • 성공시 publicChat 이벤트로 채널 내 broadcast.
    • 해당 유저의 id, 닉네임, 보낸 시간, 메시지 내용 전달
    { // 해당 유저 id, 닉네임, 보낸 시간, message를 전달
        "fromUserId": "IZI_1Wzwhqblu0A4KA_TCrtkl4mM55Qstc_FDKMv_sY",
        "nickname": "연어초밥",
        "timestamp": 1669819694425,
        "message": ""
    }

chatRoomEntered 이벤트

  • 1:1 채팅방 입장 시. chatRoomEntered 이벤트로 서버에 전달

  • 채팅 보내기 전, 채팅 방 생성을 위한 이벤트

  • 메시지를 수신, 발신하지 않더라도 채팅방이 내부적으로 생성되어야해서

    요청

    • 상대방의 userId와 함께 chatRoomEntered 이벤트 emit.
    {
    		targetUserId: "싱대방 userId"
    }

    응답

    • 응답 없음.
    • 채팅 방이 내부적으로 생성

chatRoomLeaved 이벤트

  • 1:1 채팅방 떠날 시. chatRoomLeaved 이벤트로 서버에 전달.

  • 읽은 메시지 마킹 최신화를 위한 이벤트

    요청

    • 상대방의 userId와 함께 chatRoomLeaved 이벤트 emit.
    {
    		targetUserId: "싱대방 userId"
    }

    응답

    • 응답 없음

    유의사항

    • 채팅방을 떠난 후, 채팅방 목록을 다시 불러와야 메시지 읽음 부분이 해결됨으로 로직 순서를 다음과 같이 강제해주세요.
      • chatRoomLeaved 발생 후,
      • chat/roomList 불러오기 (API)

privateChat 이벤트

  • 1:1 채팅 전송 시, privateChat 이벤트로 서버에 전달

    요청

    • 상대방의 userId, message내용과 함께 privateChat 이벤트 emit.
    {
    		targetUserId: "싱대방 userId",
    		message: "메시지 내용"
    }

    응답

    • 상대방의 메시지 내용이 전달됩니다.
    { // 해당 유저의 id, 닉네임, 메시지 보낸 시간, 메시지 내용 전달
        "fromUserId": "IZI_1Wzwhqblu0A4KA_TCrtkl4mM55Qstc_FDKMv_sY",
        "nickname": "연어초밥",
        "timestamp": 1669820748590,
        "message": "개인 메시지 입니다.."
    }

Clone this wiki locally