成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專(zhuān)欄INFORMATION COLUMN

即時(shí)通訊之客戶(hù)端篇StropheJs.

ChristmasBoy / 1615人閱讀

摘要:解析的最終結(jié)果是,上下線通知。解析的結(jié)果是,同時(shí)可以通過(guò)和構(gòu)建父子級(jí)別元素。單聊發(fā)送查詢(xún)歸檔歷史記錄漫游查詢(xún)歸檔之前,首先是要確保歸檔存庫(kù)成功,服務(wù)端查看傳送門(mén),自行處理,參見(jiàn)。栽過(guò)的坑轉(zhuǎn)的時(shí)候回調(diào)函數(shù)丟失參考文獻(xiàn)高級(jí)編程使用和

摘要

小編是個(gè)寫(xiě)了幾年php的碼農(nóng), 接觸純Js的項(xiàng)目這也是頭一次,另外,IM的服務(wù)端是Java(tigase框架) ,為了解決舊版本BOSH(長(zhǎng)輪詢(xún))即時(shí)消息不穩(wěn)定問(wèn)題,決定更換pc網(wǎng)頁(yè)版為websockt鏈接, App用socket直連,特此更新服務(wù)端到8.0,更新安裝期間遇到了不少坑,再次記錄,熟練IM或者xmpp協(xié)議用法的不用繼續(xù)看了。

怎么添加賬戶(hù),測(cè)試是否成功等工具方法見(jiàn)另一篇

傳送門(mén)
基礎(chǔ)語(yǔ)法

xmpp尋址和節(jié),另一篇基礎(chǔ) 應(yīng)用層協(xié)議之xmpp基礎(chǔ)學(xué)習(xí)
xmpp主要是以xml格式傳輸數(shù)據(jù),詳細(xì)請(qǐng)看xep協(xié)議,這里用strophe的構(gòu)建器,主要用到的如下:

$iq,info query,主要用來(lái)查詢(xún)服務(wù)器信息,解析的最終結(jié)果是。
$pres,解析的最終結(jié)果是,上下線通知。
$msg, 解析的結(jié)果是,同時(shí)可以通過(guò).up()和.c()構(gòu)建xml父子級(jí)別元素。
執(zhí)行流程 登陸認(rèn)證
im.connect = new Strophe.Connection("ws://localhost:5290/xmpp-websocket/");
im.connect.connect("jid@localhost","pass",function(){
    console.info("this is login callback.");
});

這里,服務(wù)端其實(shí)是分為兩步走,第一步是連接,連接成功后會(huì)返回狀態(tài)碼1,然后是登陸,登陸成功后返回狀態(tài)5,詳細(xì)的狀態(tài)碼參考源碼:

關(guān)于密碼認(rèn)證的問(wèn)題,暫時(shí)采取plain方式,后續(xù)更新其他方式,比如:sha1。

單聊

發(fā)送demo

var msg = $msg({
            to: receiver,
            from: "jid@localhost",
            type: "one",
            name: "zeronlee",
            photo: "image.png"
        }).c("body", null,msg);
        im.connect.send(msg.tree());

查詢(xún)歸檔(歷史記錄漫游)

查詢(xún)歸檔之前,首先是要確保歸檔(存庫(kù))成功,服務(wù)端查看【傳送門(mén)】,自行處理,參見(jiàn)XEP-0136: Message Archiving。

最簡(jiǎn)單的demo:

var iq = $iq({type: "set"}).c("query", {xmlns: "urn:xmpp:mam:1"});
    im.connect.sendIQ(iq, function(a){
        console.log("sent iq",a);

        $(a).find("item").each(function(){
            var jid = $(this).attr("jid"); // jid
            console.log("jid",jid);
        });
    });

成功后返回以下信息:




  nAhOrNd/DNXBFtivwbm/vrN8I4GL2SLkc76eNmN0ruw=
  cnosUN6U9Md6o8TvLD42rB6jJnfPKF2DxkEBFmuK/IQ=
  14


表明查出了14條歷史消息,查詢(xún)歸檔更多見(jiàn)XEP-0313: Message Archive Management,示例代碼見(jiàn)《插件使用方法》。

群聊

群聊相對(duì)單聊要復(fù)雜的多,首先是入群(這里的群沒(méi)有密碼),出席,發(fā)消息。

出席

   var presence = $pres({from:"im7858@localhost",to:"6043@muc.localhost"}).c("x", {xmlns: "http://jabber.org/protocol/muc"}).c("history", {maxstanzas: 0, maxchars:0, seconds:0});
    im.connect.send(presence, function(a){
        console.log("sent presence",a);
   
    });

查詢(xún)?nèi)洪_(kāi)放功能信息

var presence = $iq({from:"im7858@localhost@muc.localhost"}).c("query", {xmlns: "http://jabber.org/protocol/disco#items"});
im.connect.send(presence, function(a){
    console.log("sent presence",a);

});

發(fā)消息同單聊

訂閱推送 內(nèi)網(wǎng)穿透 插件使用方法

mam歸檔查詢(xún)demo

/* XEP-0313: Message Archive Management
 * Copyright (C) 2012 Kim Alvefur
 *
 * This file is MIT/X11 licensed. Please see the
 * LICENSE.txt file in the source package for more information.
 *
 * Modified by: Chris Tunbridge (github.com/Destreyf/)
 * Updated to support v0.3 of the XMPP XEP-0313 standard
 * http://xmpp.org/extensions/xep-0313.html
 *
 */

Strophe.addConnectionPlugin("mam", {
    _c: null,
    _p: [ "with", "start", "end" ],
    init: function (conn) {
        this._c = conn;
        Strophe.addNamespace("MAM", "urn:xmpp:mam:1");
    },
    query: function (jid, options) {
        var _p = this._p;
        var attr = {
            type:"set",
            from:jid
        };
        options = options || {};
        var mamAttr = {xmlns: Strophe.NS.MAM, with:jid};
        if (!!options.queryid) {
            mamAttr.queryid = options.queryid;
            delete options.queryid;
        }
        var iq = $iq(attr).c("query", mamAttr);

        // var i;
        // for (i = 0; i < this._p.length; i++) {
        //     var pn = _p[i];
        //     var p = options[pn];
        //     delete options[pn];
        //     if (!!p) {
        //         iq.c("field",{var:pn}).c("value").t(p).up().up();
        //     }
        // }
        // iq.up();
        //
        var onMessage = options.onMessage;
        delete options.onMessage;
        var onComplete = options.onComplete;
        delete options.onComplete;
        ////////////////////////////////////////////////
        // iq.cnode(new Strophe.RSM(options).toXML());

        var _c = this._c;
        var handler = _c.addHandler(onMessage, null, "message", null);
        return this._c.sendIQ(iq, function (a) {
            console.log(a);
                _c.deleteHandler(handler);
                onComplete.apply(this, arguments);
            },
            function (err) {
                //error callBack function
                console.log("Error Response from server:", err);
            });
    }
});

插件必須是Strophe.addConnectionPlugin("mam", {init:function(){}})結(jié)構(gòu)才得以成功加載,用webpack或者頁(yè)面加載進(jìn)來(lái)之后自動(dòng)實(shí)例化init,群聊就是以插件形式使用,當(dāng)然還可以自定義其他更高級(jí)的,具體參考《XMPP高級(jí)編程+使用JavaScript和jQuery》第三部分十四章。

栽過(guò)的坑

addHandlers轉(zhuǎn)handlers的時(shí)候回調(diào)函數(shù)丟失.

參考文獻(xiàn)

XMPP高級(jí)編程+使用JavaScript和jQuery

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/105596.html

相關(guān)文章

  • 即時(shí)通訊服務(wù)端Tigase.

    摘要:摘要是一個(gè)應(yīng)用層協(xié)議,主要做網(wǎng)頁(yè)版即時(shí)通訊,是基于和實(shí)現(xiàn),服務(wù)端常見(jiàn)的框架有等,這三個(gè)都親自踩過(guò)坑,唯有相對(duì)牛逼完善一些,客戶(hù)端主要就是了。 摘要 xmpp是一個(gè)應(yīng)用層協(xié)議,主要做網(wǎng)頁(yè)版即時(shí)通訊,是基于RFC3920和RFC3921實(shí)現(xiàn),服務(wù)端常見(jiàn)的框架有openfire,tigase,prosody等,這三個(gè)都親自踩過(guò)坑,唯有tigase8.0相對(duì)牛逼(完善)一些,客戶(hù)端主要就是st...

    msup 評(píng)論0 收藏0
  • 即時(shí)通訊云行業(yè)提速 網(wǎng)易云信何以登上科技

    摘要:網(wǎng)易云信即時(shí)通訊云服務(wù)的產(chǎn)品優(yōu)勢(shì)網(wǎng)易云信涉足多元行業(yè)提升用戶(hù)體驗(yàn)滿(mǎn)足內(nèi)外協(xié)同今年月,網(wǎng)易云信正式宣布通信與視頻業(yè)務(wù)實(shí)現(xiàn)戰(zhàn)略升級(jí)?! №n寒導(dǎo)演的影片《乘風(fēng)破浪》中,有這樣一個(gè)片段,在六一還堅(jiān)持囤BB機(jī)有前途的時(shí)候,從事電腦編程和軟件開(kāi)發(fā)的小馬則認(rèn)為即時(shí)通訊才是未來(lái)的發(fā)展方向??吹竭@里,很多觀影者都不謀而合地笑了,小馬口中的即時(shí)通訊就是在1999年誕生的OICQ。影片中阿浪說(shuō)的那句話(huà)沒(méi)錯(cuò),這個(gè)世...

    mengera88 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<