Задать вопрос

Не отправляется сообщение с бэка на фронт по вебсокету, в чем проблема?

у меня есть такой код на фронте
connection = new WebSocket('ws://localhost:1000/' + this.phoneNumber)
		connection.onmessage = async msg => {
			msg = JSON.parse(msg.data)
			console.log(msg)
			if (msg.action === 'registeredNewFire' && this.userData.typeOfUser === 'fireman') {
        const message = {
          action: 'takeCall',
          agent: 'fireMan',
          data: {
            fireManId: this.userData._id,
            causing: msg.data.resultRegistrationNewFire.causing,
            currentFireId: msg.data.resultRegistrationNewFire._id
          }
        }

				connection.send(JSON.stringify(message))
      }

      if (msg.action === 'fireTruckDispatched') {
        this.activeFireManPhoneNumber = msg.data.fireManPhoneNumber
        console.log(this.activeFireManPhoneNumber, 'dispatched')
      }

      if (msg.action === 'startGeoDataTransfering') {
        const geoDataTranfering = {
          action: 'geoDataTransfering',
          agent: 'fireMan',
          data: {
            phoneNumber: msg.data.causingPhoneNumber,
            message: {
              latitude: Math.floor(Math.random() * 100) + 1,
              altitude: Math.floor(Math.random() * 100) + 1
            }
          }
        }
        this.activeCausingPhoneNumber = msg.data.causingPhoneNumber
        this.loopKey = setInterval(() => connection.send(JSON.stringify(geoDataTranfering)), 500)
        console.log(this.loopKey)
      }

      if (msg.action === 'fireBrigadeArrived') {
        console.log(loopKey, true)
        clearInterval(loopKey)
      }
		}
	},
methods: {
brigadeArrived () {
      const message = {
        action: 'fireBrigadeArrived',
        agent: 'client',
        data: {
          fireManPhoneNumber: this.activeFireManPhoneNumber,
          loopKey: this.loopKey
        }
      }
      console.log(message)
      connection.send(JSON.stringify(message))
    }
}

и такой кусок из бэка
// fire brigade Arrived
      if (msg.action === 'fireBrigadeArrived') {
        const messageForFireBrigadeArrived = {
          action: 'fireBrigadeArrived',
          agent: 'server',
          data: {
            result: true
          }
        }
        for (let clientForFireBrrigadeArrived of clients) {
          if (clientForFireBrrigadeArrived.phoneNumber === msg.data.fireManPhoneNumber) {
            clientForFireBrrigadeArrived.connection.send(JSON.stringify(messageForFireBrigadeArrived))
          }
        }
      }

вообщем при получении определенного сообщения на фронте через вебсокет я включаю setInterval и таким способом я как бы постоянно отправляю сообщения на бэк с интервалом в 500мс, проблема в том что когда я отправляю с фронта другое сообщение на бэк что бы он отправил это сообщение на фронт и остановил setInterval, это происходит здесь if (msg.action === 'fireBrigadeArrived'), дело в том что он даже не заходит в этот if хотя я вроде как все проверил сообщение отправляется, action такой же он должен туда зайти но ничего не работает я уже ничего не понимаю, я думаю может это изза setInterval типо он не позволяет получать остальные сообщения но я хз, если это так то как это обойти помогите пожалуйста
  • Вопрос задан
  • 76 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы