首页 > 解决方案 > 如何从套接字获取实时消息。io 在科尔多瓦应用程序中?

问题描述

我正在使用 socket.io 在 Cordova 项目中设置聊天功能但是,我无法实时加载消息。

在我的 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.
});

那么,我应该如何处理来自套接字的广播数据以实时显示消息?

标签: javascriptcordovasocketssocket.iochat

解决方案


推荐阅读