我在我的网络应用程序中实现了quickblox聊天。现在,我希望将消息的状态显示为delivered
,以防它们刚刚发送给用户,并在read
看到消息时显示。{/ p>
在您的Javascript SDK中,我找到了两个函数QB.chat.sendDeliveredMessage
和QB.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
。
请告诉我在调用此功能时我做错了什么。如果需要进一步的信息,请告诉我。
答案 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个选项:
选项A:
使用“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) {});
在收件人用户阅读完消息后,将QB侦听器添加为触发器:
QB.chat.onReadStatusListener = updateReadersList;
然后使用此签名添加此类函数:
function updateReadersList(messageId, dialogId, userId){
console.log('userId has read your messageId that in dialogId');
}
选项B:
添加QB侦听器以处理新的传入消息:
QB.chat.onMessageListener = showMessage;
使用此签名添加此类侦听器函数: 在那个听众中,你可以通知发件人他的信息已经被阅读(由你):
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.");
}
}
添加一个简单的函数,只是将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.");
}