socket.io 명세서 - boostcamp-2020/Project12-B-Slack-Web GitHub Wiki

Client

message

emit

event name: create message

socket.emit('create message',{
    chatroomId: number, 
    content: string
    })

비고: 생성될 메시지 정보를 서버에 전달


event name: update message

socket.emit('create message',{
    messageId: number, 
    content: string
    })

비고: 수정될 메시지 정보를 서버에 전달


event name: delete message

socket.emit('delete message',{
    messageId: number
    })

비고: 삭제될 메시지의 정보를 서버에 전달


on

event name: create message

socket.on('create message', (message) =>{
        /*deploy code*/
    })

message

{
  messageId: number,
  content: string,
  createdAt: date,
  updatedAt: date,
  deletedAt: date,
  user: User {
    userId: number,
    profileUri: string,
    displayName: string
  },
  chatroom: Chatroom { chatroomId: number },
  chatroomId: number
}

비고: 서버로부터 생성된 메시지의 정보를 받음


event name: update message

socket.on('update message', (message) =>{
        /*deploy code*/
    })

message

{ 
    messageId: number, 
    content: string 
    }

비고: 서버로부터 수정된 메시지의 정보를 받음


event name: delete message

socket.on('delete message', (message) =>{
        /*deploy code*/
    })

message

{
    messageId: number
}

비고: 서버로부터 삭제된 메시지의 정보를 받음


reply

emit

event name: create reply

socket.emit('create reply',{
    messageId: number, 
    content: string
    })

비고: 생성될 reply 정보를 서버에 전달


event name: update reply

socket.emit('create reply',{
    replyId: number, 
    content: string
    })

비고: 수정될 메시지 정보를 서버에 전달


event name: delete reply

socket.emit('delete reply',{
    messageId: number
    })

비고: 삭제될 reply의 정보를 서버에 전달


on

event name: create reply

socket.on('create message', (reply) =>{
        /*deploy code*/
    })

reply

{
  replyId: number,
  content: string,
  createdAt: date,
  updatedAt: date,
  user: User {
    userId: number,
    profileUri: string,
    displayName: string
  },
  chatroomId: number
}

비고: 서버로부터 생성된 reply의 정보를 받음


event name: update reply

socket.on('update reply', (reply) =>{
        /*deploy code*/
    })

reply

{ 
    replyId: number, 
    content: string 
    }

비고: 서버로부터 수정된 reply의 정보를 받음


event name: delete reply

socket.on('delete reply', (reply) =>{
        /*deploy code*/
    })

reply

{
    replyId: number
}

비고: 서버로부터 삭제된 reply의 정보를 받음

chatroom

emit

event name: join chatroom

socket.emit('join chatroom',{
    chatroomId: number 
    })

비고: 사용자를 해당 채팅방의 room에 join (채팅방 생성, 채팅방 참여 등에서 최초 1회만 사용)


event name: join DM

socket.emit('join DM',{
    userId: number
    chatroomId: number
    })

비고: DM이 생성당한 사용자가 해당 DM에 조인할 수 있도록 chatroomId와 userId를 전달


event name: leave channel

socket.emit('leave channel',{
    chatroomId: number
    })

비고: 해당 사용자가 해당 chatroom에서 떠나도록 DB에서 설정, 해당 챗룸 구독 해제


on

event name: join DM

socket.on('join DM', (data) =>{
    socket.emit('join chatroom',{
        chatroomId: data.chatroomId
        })
    })

data

{
    chatroomId: number
}

비고: 서버로부터 해당 사용자가 참여할 DM의 chatroomId를 받음


event name: join chatroom

socket.on('join chatroom', (data) =>{
        /*deploy code*/
    })

data

{
  chatroomId: number,
  users: [
    User {
      userId: number,
      profileUri: string,
      displayName: string
    }
  ],
  userCount: number
}

비고: 서버로부터 새로운 사용자가 참여한 chatroom의 갱신된 정보를 받음


event name: leave channel

socket.on('leave channel', (chatroom) =>{
        /*deploy code*/
    })

chatroom

{
  title: string,
  description: string,
  isPrivate: bool,
  chatType: 'Channel',
  topic: string,
  userCount: nmumber,
  users: [
    User {
      userId: number,
      profileUri: string,
      displayName: string
    }
  ],
  chatroomId: number,
  leaveUserId: number
}

비고: 사용자가 해당 채팅방을 떠났을 경우 서버로부터 새롭게 갱신된 채팅방의 정보와 떠난 userId를 받음


reaction

emit

event name: create reaction

socket.emit('create reaction',{
    messageId: number, 
    title:stirng, 
    emoji: string
    })

비고: 생성될 messageReaction의 정보를 서버에 전달


event name: delete reaction

socket.emit('delete reaction',{
    messageId: number, 
    reactionId: number
    })

비고: 삭제될 messageReaction의 정보를 서버에 전달


on

event name: create reaction

socket.on('create reaction', (messageReaction) =>{
        /*deploy code*/
    })

messageReaction

{
  reactionId: number,
  title: string,
  emoji: string,
  messageId: number,
  authors: [
      { 
          displayName: string, 
          userId: number 
      }
  ],
  chatroomId: number
}

비고: 서버로부터 생성된 reaction의 정보를 받음


event name: delete reaction

socket.on('delete reaction', (messageReaction) =>{
        /*deploy code*/
    })

messageReaction

{
  reactionId: number,
  title: string,
  emoji: string,
  messageId: number,
  authors: [
      { 
          displayName: string, 
          userId: number 
      }
  ],
  chatroomId: number
}

비고: 서버로부터 삭제된 reaction의 정보를 받음


reply reaction

emit

event name: create reply reaction

socket.emit('create reply reaction',{
    chatroomId: number,
    replyId: number, 
    title: stirng, 
    emoji: string
    })

비고: 생성될 replyReaction의 정보를 서버에 전달


event name: delete reply reaction

socket.emit('delete reply reaction',{
    replyId: number, 
    reactionId: number,
    chatroomId: number
    })

비고: 삭제될 replyReaction의 정보를 서버에 전달


on

event name: create reply reaction

socket.on('create reply reaction', (replyReaction) =>{
        /*deploy code*/
    })

replyReaction

{
  reactionId: number,
  title: string,
  emoji: string,
  replyId: number,
  authors: [ 
    { 
      displayName: string, 
      userId: number 
    } 
  ],
  messageId: number,
  chatroomId: number
}

비고: 서버로부터 생성된 reply reaction의 정보를 받음


event name: delete reply reaction

socket.on('delete reply reaction', (replyReaction) =>{
        /*deploy code*/
    })

replyReaction

{
  reactionId: number,
  title: string,
  emoji: string,
  replyId: number,
  authors: [ 
    { 
      displayName: string, 
      userId: number 
    } 
  ],
  messageId: number,
  chatroomId: number
}

비고: 서버로부터 삭제된 reply reaction의 정보를 받음




⚠️ **GitHub.com Fallback** ⚠️