Сначала я добавил 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, то перед отправкой комментария. Там нет ошибки. есть ли проблемы с моим кодом здесь? Как я могу решить эту проблему?