Socket.io сообщение / комментарий отправьте дважды. Как решить это? - PullRequest
0 голосов
/ 18 марта 2020

Сначала я добавил emit, чтобы присоединиться к комнате, и использовал идентификатор доски

io.on('connection', function(socket) {

    socket.on('joinboard', function (data) {
      socket.join(data.boardId)
    })

Вот мой эмитент клиента joinboard.

created () {
          this.socket.emit('joinboard', {
            boardId: this.$route.params.boardId
          })
        }

Это отправляемый сокетом ответ на сервере.

socket.on('reply', function (data) {
      io.sockets.in(data.boardId).emit('reply', data)
    })

, и вот мой смонтированный ответ при выдаче.

mounted () {
    this.socket.on('reply', data => {
      this.$store.commit('legalAdvice/SET_MESSAGE_REALTIME', data)
    })
  }

Вот мой код для ответа отправлено

this.socket.emit('reply', {
            userId: this.user,
            boardId: this.boardId,
            message: this.message,
            createdAt: new Date(),
            lawyerReply: !this.$store.getters['legalAdvice/legalAdvice'].lawyerReply,
            isAdvice: this.$store.getters['user/user'].user.isLawyer,
            user: {
              fullName: this.$store.getters['user/user'].user.fullName,
              imageUrl: this.$store.getters['user/user'].user.imageUrl
            }
          })

Это мой vuex из mounted() кода ниже

SET_MESSAGE_REALTIME (state, payload) {
    state.legalAdvice.conversations.push(payload)
    if (!payload.isAdvice) {
      state.legalAdvice.followUps = state.legalAdvice.followUps - 1
    }
    state.legalAdvice.lawyerReply = payload.lawyerReply
  }

Проблема здесь. Сообщение отправляется дважды, иногда 3, но если я перефразирую sh, то перед отправкой комментария. Там нет ошибки. есть ли проблемы с моим кодом здесь? Как я могу решить эту проблему?

...