Quickblox:消息传递和读取状态

时间:2015-09-23 05:26:23

标签: javascript chat message quickblox

我在我的网络应用程序中实现了quickblox聊天。现在,我希望将消息的状态显示为delivered,以防它们刚刚发送给用户,并在read看到消息时显示。{/ p>

在您的Javascript SDK中,我找到了两个函数QB.chat.sendDeliveredMessageQB.chat.sendReadMessage,但每次我将此函数称为:

QB.chat.sendDeliveredMessage(
    QBChatHelpers.getJID(chatUser.id),
    "5600f885a28f9ac7e801048c"    //this is just a sample msg-id
);

当聊天正在POST上运行时,它会通过网址http://chat.quickblox.com:8080/调用带有http://chat.quickblox.com:5280/请求的ajax。 同样在库中,我将端口更改为5280而不是8080,以便它可以使用端口8080调用URL并调用http://chat.quickblox.com:5280/,然后提供错误代码405: Invalid Hostname

请告诉我在调用此功能时我做错了什么。如果需要进一步的信息,请告诉我。

2 个答案:

答案 0 :(得分:1)

我们正在研究此功能,在新版本的QuickBlox JS SDK消息中将以可标记状态发送。 sendDeliveredStatus (参数) - 收到可标记状态的消息后会自动发送,该消息将通过Listener QB.chat.onDeliveredStatusListener(messageId)的函数发出信号。 dialogId,userId);

sendReadStatus(params) - 可以根据事件发送它(例如,您设置了一个处理器,它会在收到您的显示器后发现消息已经出现)带有可标记状态的消息,它将通过Listener QB.chat.onReadStatusListener(messageId,dialogId,userId)的函数发出信号;)

状态发送参数:

params = {
    messageId: messageId,
    userId: userId,
    dialogId: dialogId
  };

答案 1 :(得分:0)

谢谢大家,这页帮助了我很多。

发送消息时可能有2个选项:

  • 甲。您是发件人,另一个用户是收件人:您 - > ANOTHER-USER
  • B中。您是收件人,另一个用户是发件人:另一个用户 - > YOU

选项A:

  1. 使用“markable = 1”标记将消息发送给收件人。 例如:

      var params = {
        chat_dialog_id: "56b20540f583bb7bcb00rrr6",
        message: msg),
        send_to_chat: 1,
        markable: 1,
        extension: {
          save_to_history: 1
        }
      };
    
      // SEND THE MESSAGE
      QB.chat.message.create(params, function (err, res) {});
    
  2. 在收件人用户阅读完消息后,将QB侦听器添加为触发器:

    QB.chat.onReadStatusListener = updateReadersList;
    
  3. 然后使用此签名添加此类函数:

    function updateReadersList(messageId, dialogId, userId){
        console.log('userId has read your messageId that in dialogId');
    
    }
    

    选项B:

    1. 添加QB侦听器以处理新的传入消息:

      QB.chat.onMessageListener = showMessage;
      
    2. 使用此签名添加此类侦听器函数: 在那个听众中,你可以通知发件人他的信息已经被阅读(由你):

      function showMessage(userId, msg) {
      console.log('userId sent you this msg');
      
          //notify sender: message was read:
          if(userId != "MY-USER") {
            sendReadSignalToSender(msg, userId);
            console.log("You notified userId that his msg was read.");
          }       
      

      }

    3. 添加一个简单的函数,只是将params传递给QB.chat.sendReadStatus函数:

      function sendReadSignalToSender(dialogMsg, senderId){
      var params = {
        messageId: (dialogMsg.id || dialogMsg._id),
        userId: senderId,
        dialogId: (dialogMsg.dialog_id || dialogMsg.chat_dialog_id)
      };
      QB.chat.sendReadStatus(params);
      
      console.log("senderId was notified that his dialogMsg was read.");
      }