WebSDK 已经足够新了。我们致力于其文档。
但是,在这里,我将向您展示一些代码 sn-ps 如何创建一对一聊天。
如您所知,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,很快就会将其部署到生产环境中。