Как получить сообщение в реальном времени из сокета. в приложении Cordova? - PullRequest
0 голосов
/ 05 июня 2019

Я настраиваю функцию чата в проекте Cordova, используя socket.io Однако я не могу загрузить сообщение в режиме реального времени.

На стороне клиента моего приложения Cordova я написал код для кнопки отправки сообщения, как показано ниже:

$('#send').click(function() {
    if ($('#msg_inp').val()) {
        var data = {
            fromId: fromId,
            toId: toId,
            message: $('#msg_inp').val()
        }
        var child = `<div class="media"><div class="media-body media-color-right">` 
            + (data.message) + `</div></div> `

        $('#chatbox').append(child);
        $('#msg_inp').val('');
        socket.emit('chatting',data);
        }
    }
);

Я отправляю данные на сервер для хранения сообщения в базе данных. Код на стороне сервера такой:

socket.on('chatting', function (data) {
    userM.findSenderAndReceiver(data.fromId, data.toId, function (err, result) {
      console.log(result);
      if (err) {
          console.log(err);
          throw err;
      } else {
          userM.insertMessages(data, function (err, result) {
              if (err) {     
                  throw err;
                  console.log(err);
              }
          });

          console.log(data);
          data.chattingwith = result.from.username;
          data.chattingwithId = result.from.id;
          data.from_image_url = result.from.image_url;
          data.to_image_url = result.to.image_url;
          console.log(data);
          socket.broadcast.to(result.to.socketID).emit('chatting', data);
      }
    });
  });

На стороне сервера после сохранения сообщения (как видно из приведенного выше кода) я отправляю данные в socketID получателя для отображения чата в окне чата получателя в режиме реального времени.

Однако я не могу получить широковещательное сообщение на стороне клиента. Я пытался это так:

socket.on('chatting',function(data){
    console.log(data) // -> This data doesn't get displayed.
});

Итак, как мне обрабатывать передаваемые данные из сокета для отображения сообщения в реальном времени?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...