我正在尝试从网络客户端创建1对1聊天。
我下载了SDK和群聊示例。 除了网络外,所有平台似乎都有很好的例子。
(例如:http://quickblox.com/developers/Android_XMPP_Chat_Sample)
任何人都可以提供代码/示例/指示吗?
我错过了什么,或者网络的文档真的缺乏?
谢谢
答案 0 :(得分:4)
WebSDK足够新。我们正在处理其文档。 但是,在这里,我将向您展示一些代码片段,以便您可以创建一对一的聊天。
如您所知,QuickBlox使用XMPP服务器作为聊天服务。 WebSDK没有XMPP API的包装器,所以你应该包含额外的XMPP JS库。
对于我们的示例,我们建议使用Strophe.js(http://strophe.im/strophejs/)
让我们开始吧:
1)包括你的xmpp js库和WebSDK
<script src="quickblox.js"></script>
<script src="strophe.js"></script>
2)描述您的QB证书
var QBAPP = {
app_id: '<your QuickBlox id>',
auth_key: '<your QuickBlox key>',
auth_secret: '<your QuickBlox secret>'
};
// our parameters to connect to QuickBlox Chat service
var CHAT = {
server: 'chat.quickblox.com',
bosh_server: 'http://chat.quickblox.com:5280'
};
3)使用用户身份验证创建QB会话
var params, connection;
params = {
login: '<your QB login>',
password: '<your QB password>'
};
QB.init(QBAPP.app_id, QBAPP.auth_key, QBAPP.auth_secret);
QB.createSession(params, function(err, res) {
if (err) {
console.log(err.detail);
} else {
connectChat(res.user_id, params.password);
}
});
4)使用您的用户JID和密码(http://quickblox.com/developers/Chat#Connecting_to_server)
连接到QuickBlox聊天服务器function connectChat(user_id, password) {
var userJID = user_id + "-" + QBAPP.app_id + "@" + CHAT.server;
var userPass = password;
connection = new Strophe.Connection(CHAT.bosh_server);
connection.rawInput = rawInput;
connection.rawOutput = rawOutput;
connection.connect(userJID, userPass, function (status) {
switch (status) {
case Strophe.Status.ERROR:
console.log('[Connection] Error');
break;
case Strophe.Status.CONNECTING:
console.log('[Connection] Connecting');
break;
case Strophe.Status.CONNFAIL:
console.log('[Connection] Failed to connect');
break;
case Strophe.Status.AUTHENTICATING:
console.log('[Connection] Authenticating');
break;
case Strophe.Status.AUTHFAIL:
console.log('[Connection] Unauthorized');
break;
case Strophe.Status.CONNECTED:
console.log('[Connection] Connected');
// Create an event handler for getting messages
connection.addHandler(onMessage, null, 'message', null, null, null);
// send a presence message
connection.send($pres().tree());
break;
case Strophe.Status.DISCONNECTING:
console.log('[Connection] Disconnecting');
break;
case Strophe.Status.DISCONNECTED:
console.log('[Connection] Disconnected');
break;
case Strophe.Status.ATTACHED:
console.log('[Connection] Attached');
break;
}
});
}
// logs
function rawInput(data) {console.log('RECV: ' + data);}
function rawOutput(data) {console.log('SENT: ' + data);}
5)接收消息的功能
function onMessage(msg) {
console.log(msg);
var to = msg.getAttribute('to');
var from = msg.getAttribute('from');
var type = msg.getAttribute('type');
var elems = msg.getElementsByTagName('body');
// we must return true to keep the handler alive.
// returning false would remove it after it finishes.
return true;
}
6)发送消息的功能
function sendMessage() {
params = {
to: '<some JID>', // JID of recipient QB User
from: connection.jid, // JID of sender QB user
type: 'chat' // type of the message
}
var msg = $msg(params).c('body').t('Hello world!');
connection.send(msg.tree());
}
我敢肯定,它可以帮助您使用Javascript与QuickBlox进行一对一聊天。 如果要使用群聊,可以从Web XMPP聊天示例的开发分支查看“聊天模块代码”: https://github.com/QuickBlox/sample-chat-xmpp-web/blob/develop/qbchatroom.js
今天我们完成了新样本的设计http://i.imgur.com/r8CSdNV.png,很快就会将其部署到生产中。
答案 1 :(得分:1)
我建议您可能会看到405错误,因为您在调用connectChat函数后立即调用了sendMessage函数。
连接聊天需要一段时间,因此在客户端(浏览器)尚未完成连接聊天服务器之前,您无法发送消息。您需要在函数connectChat中调用sendMessage函数,其状态为“已连接”。或者,您可以对onclick事件执行sendMessage函数到标记<button>
或其他内容。对于您的示例,请像这样插入sendMessage:
case Strophe.Status.CONNECTED:
console.log('[Connection] Connected');
connection.addHandler(onMessage, null, 'message', null, null, null);
connection.send($pres().tree());
sendMessage();
break;
答案 2 :(得分:0)
从今天开始,QuickBlox为WebSDK提供了一个自己的Web XMPP Chat插件。 您可以在这里查看使用此库的1:1 Chat的新示例: http://quickblox.com/developers/Web_XMPP_Chat_Sample