色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

玩轉OpenHarmony社交場景:即時通訊平臺

OpenAtom OpenHarmony ? 來源:未知 ? 2023-01-01 08:05 ? 次閱讀

開源項目 OpenHarmony是每個人的 OpenHarmonyad914b52-8964-11ed-bfe3-dac502259ad0.jpg

朱偉

中國科學院軟件所

OpenHarmony知識體系工作組

一、簡介

本樣例是基于即時通訊(Instant messaging,簡稱IM)服務實現(xiàn)的OpenAtom OpenHarmony(簡稱“OpenHarmony”)應用,允許兩人或多人使用互聯(lián)網(wǎng)即時地傳遞文字、圖片、文件、語音、emoji等訊息,可應用于各類聊天場景,為人們帶來更加及時高效的通訊體驗。 此外即時通訊平臺具備較高的定制化特點,適用于多種行業(yè),客戶可以根據(jù)自己的需求來定制,實現(xiàn)即時通訊的內部私有化。 設備端:DAYU200(RK3568)開發(fā)板,OpenHarmony 3.1 release系統(tǒng)。

二、即時通訊實現(xiàn)原理

想要實現(xiàn)多個設備之間的無障礙即時通訊,需要多臺終端設備、終端應用和服務器配合一起使用。首先應該將終端應用安裝到終端設備上,用戶通過應用向服務器申請注冊賬號。隨后,用戶可以通過賬號進行查找,添加其他好友,并向好友發(fā)送文字、圖片、文件、語音、emoji等訊息。用戶發(fā)送的訊息會先送達服務器,由服務器判斷其好友的狀態(tài)(離線/在線),然后選擇發(fā)送或者暫時緩存消息等操作。最后,好友的終端應用接收到消息。實現(xiàn)即時通訊的設備需求:安裝應用的終端設備、網(wǎng)絡環(huán)境和云端服務器。前提條件:用戶將應用安裝在終端設備上,并且擁有注冊賬號,且需要通訊的用戶也成功注冊了賬號并且添加了好友。通訊原理:用戶在安裝了應用的終端設備上編輯信息(文字、圖片、文件、語音、emoji等),通過網(wǎng)絡將消息發(fā)送至云端服務器。當對方用戶在線時,云端服務器將把消息推送給對方用戶,對方用戶安裝了應用的終端設備也將接收到信息。當對方用戶不在線時,信息將被暫時緩存在云端服務器。

三、4步實現(xiàn)多人即時通訊

(1)通訊功能 通訊功能是通過TCP協(xié)議實現(xiàn)的,我們將通訊接口connect()、send()、receive()的實現(xiàn)放置在CPP文件中,通過NAPI的方式對JS層暴露接口。 ?connect():客戶端和服務器建立連接; ? send():消息發(fā)送功能 ? receive():消息接收功能;
//建立TCP連接
if (connect(sock_cli, (struct sockaddr *)&servaddr, sizeof(servaddr)) < 0) {
    napi_create_int32(env, 0, &result);
} else {
    napi_create_int32(env, 1, &result);
    OH_LOG_INFO(LOG_APP,"C++ 接收線程啟動");
    startRec();
}
 //發(fā)送消息
if(send(sock_cli, data, strlen(data),0) == -1) {
    OH_LOG_INFO(LOG_APP,"zjf == send() : -1");
    napi_create_int32(env, 0, &result);
} else {
    OH_LOG_INFO(LOG_APP,"zjf == send() : !-1");
    napi_create_int32(env, 1, &result);
}
//接收消息
getStep(queue0,sharedMessage); //取出一條消息
const char *c_s=sharedMessage.c_str();//換為char*形式處理
napi_value result;
napi_create_string_utf8(env, c_s, sharedMessage.length(), &result);
std::string().swap(sharedMessage);//清空字符串
(2)文件消息的發(fā)送與接收adf71db0-8964-11ed-bfe3-dac502259ad0.png ? 文件轉發(fā)是即時通訊辦公場景下的重要功能。樣例中的文件功能支持文件消息的發(fā)送、接收和下載。用戶通過點擊聊天界面的“+”按鈕,選擇“文件”按鈕,完成本地文件的瀏覽,隨后可以選擇是否將文件發(fā)送給好友。這個功能的實現(xiàn)包括三個步驟:(1)文件的選擇;(2)文件上傳到服務器;(3)文件的接收。 ??文件上傳
//文件的選擇
let file1 = {filename: this.$app.$def.uid +'-'+ FILE_URL, name: 'file', uri: FILE_URL, type:fileType }
let fileId = this.guid();
let data = {};
let header = { "filename": this.selectedFileName.toString()};
//文件上傳到服務器
request.upload({ url: "http://" + this.$app.$def.ip +"/file/fileUpload?fileSignature=" + fileId + "&uid=" +this.$app.$def.uid + "&fileType=" +this.$app.$def.chatData[this.idx].unRead, header: header, method: "POST", files: [file1], data: [data] }).then((data) => {
  uploadTask = data;
  uploadTask.on('headerReceive', function callback(headers){
  _this.socketSendFile(fileId, timestamp);
  });
}).catch((err) => {
  console.error('fileSelect=====Failed to request the upload. Cause: ' + JSON.stringify(err));
})
//文件的接收
let downloadConfig = {  //下載參數(shù)
            url: fileUrl, 
            header: {}, 
            enableMetered: true, 
            enableRoaming: true,
            filePath: '/data/storage/el2/base/haps/entry/files/' + downloadFileName,
            networkType: request.NETWORK_WIFI
}
request.download(downloadConfig, (err, data) => {
        if (err) {
            return;
        }
        downloadTask = data;
        //下載完成
        downloadTask.on('complete', function callback() {
                prompt.showToast({
                   message: '下載文件成功!',
                   duration: 1000,
                });
});
(3)語音消息的發(fā)送與接收 ae0ccc28-8964-11ed-bfe3-dac502259ad0.png ? 用戶通過點擊聊天界面的錄制按鈕,完成語音的錄制,隨后可以選擇是否將語音發(fā)送給好友。這個功能的實現(xiàn)包括三個步驟:(1)語音的錄制;(2)語音上傳到服務器;(3)語音的接收。 圖片消息的發(fā)送與語音消息的發(fā)送步驟相同,文章中不再贅述。
//語音錄制
startRecorder(config, callback) {
    if (typeof (this.audioRecorder) !== 'undefined') {
        this.audioRecorder.on('prepare', () => {
        this.audioRecorder.start()
    })
        this.audioRecorder.on('start', () => {
            callback()
        })
        this.audioRecorder.prepare(config)
     } else {
        logger.info(`${TAG} case failed, audiorecorder is null`)
    }
}


//錄制好的語音文件的位置
let srcPath = 'internal://cache/' + this.mainData.file + '.wav'
let file1 = { filename: this.$app.$def.uid +'-'+ this.mainData.path, name: 'audio', uri: srcPath, type: "wav" };


//語音消息發(fā)送到服務器
request.upload({ url: myurl, header: header, method: "POST", files: [file1], data: [data] }).then((data) => {
            uploadTask = data;
            uploadTask.on('headerReceive', function callback(headers){
              _this.sendAudio(audioId)
            });
            uploadTask.on('progress', function callback(uploadedSize, totalSize) {
                console.info("dialogPages=====upload totalSize:" + totalSize + "  uploadedSize:" + uploadedSize);
            });
        }).catch((err) => {
            console.error('dialogPages=====Failed to request the upload. Cause: ' + JSON.stringify(err));
        })
//語音的接收
let downloadConfig = {    //下載參數(shù)
        url: item.content.path,
        header: {},  
        enableMetered: true,                      
        enableRoaming: true,                      
        filePath: filePath,               
        networkType: request.NETWORK_WIFI        
}
        let downloadTask;
        let _this = this
        request.download(downloadConfig, (err, data) => {
            if (err) {
                 return;
            }
            downloadTask = data;
            //下載完成
            downloadTask.on('complete', function callback() {
               let audio = {
                  content: { path: filePath }
                 }
                 _this.playAudio(audio)
});
(4)emoji消息的發(fā)送與接收 ae25034c-8964-11ed-bfe3-dac502259ad0.png ? emoji是即時通訊軟件不可缺少的一部分,可以更加生動地表現(xiàn)用戶的聊天情感。在樣例中,用戶通過點擊聊天界面的emoji按鈕,即可找到目前應用內支持的所有樣式的emoji,隨后可以選擇具體樣式并將其發(fā)送給好友。
//引入emoji第三方組件
<element name="emojiExpression" src="../../common/components/emojiExpression/emojiExpression.hml">element>


//第三方組件的展示布局
<div id="moreContainer" if="{{showFace}}">
    <div id="moreOneLine">
        <div class="moreFillGap" style="flex: 1 1;">div>
        <text style="left: 25fp; top: 10fp;">所有表情text>
        <emojiExpression>emojiExpression>
        <div class="moreFillGap" style="flex: 1 1;">div>
    div>
div>

四、即時通訊功能總結

本樣例是基于OpenHarmony實現(xiàn)的即時通訊應用,目前已經(jīng)支持文字、圖片、文件、語音、emoji等訊息的快速發(fā)送與接收。除此之外還實現(xiàn)了好友的添加與刪除、黑名單、安全登錄、私聊/群聊、個人信息設置(二維碼/頭像等)等功能的全方面支持。 代碼地址

https://gitee.com/isrc_ohos/instant-message_ohos

五、相關參考鏈接

樣例源碼

https://gitee.com/isrc_ohos/instant-message_ohos

OpenHarmony知識體系工作組

https://gitee.com/openharmony-sig/knowledge


原文標題:玩轉OpenHarmony社交場景:即時通訊平臺

文章出處:【微信公眾號:OpenAtom OpenHarmony】歡迎添加關注!文章轉載請注明出處。


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 鴻蒙
    +關注

    關注

    57

    文章

    2345

    瀏覽量

    42822
  • OpenHarmony
    +關注

    關注

    25

    文章

    3716

    瀏覽量

    16260

原文標題:玩轉OpenHarmony社交場景:即時通訊平臺

文章出處:【微信號:gh_e4f28cfa3159,微信公眾號:OpenAtom OpenHarmony】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    [迅為RK3568開發(fā)板]非科班也能玩轉Android應用,體驗QT跨平臺能力

    [迅為RK3568開發(fā)板]非科班也能玩轉Android應用,體驗QT跨平臺能力
    的頭像 發(fā)表于 12-18 16:41 ?242次閱讀
    [迅為RK3568開發(fā)板]非科班也能<b class='flag-5'>玩轉</b>Android應用,體驗QT跨<b class='flag-5'>平臺</b>能力

    “恒峰國際”完成1億美金融資,推出區(qū)塊鏈平臺FO-X

    注入了強大的動力。 與此同時,“恒峰國際”還宣布將打造全新的區(qū)塊鏈平臺FO-X,并推出了該平臺下的首款產(chǎn)品——即時通訊軟件FoChat。據(jù)悉,F(xiàn)oChat不僅具備即時通訊的基本功能,還
    的頭像 發(fā)表于 12-13 10:41 ?1187次閱讀

    即時通話軟件音頻傳輸質量測試方案

    使用過程中的音頻傳輸質量。即時通話軟件基于移動網(wǎng)絡鏈路傳輸信號,通過本套測試方案中配套的網(wǎng)絡損傷仿真設備對傳輸鏈路添加不同的網(wǎng)絡影響,模擬軟件在不同網(wǎng)絡環(huán)境下的使用情況,進而測得更接近真實應用場景下的音頻傳輸質量。 POLQA測試算法是基于心理聲學模型,模擬人類聽覺系統(tǒng)對
    的頭像 發(fā)表于 12-03 14:34 ?136次閱讀
    <b class='flag-5'>即時通</b>話軟件音頻傳輸質量測試方案

    無線通信測試平臺的技術原理和應用場景

    無線通信測試平臺的技術原理和應用場景是無線通信領域的重要組成部分。以下是對這兩個方面的詳細闡述:一、無線通信測試平臺的技術原理無線通信測試平臺的技術原理主要基于無線信號傳輸和接收過程中
    發(fā)表于 11-06 14:29

    純血鴻蒙開啟公測 360織語內測“嘗鮮版”主攻企業(yè)即時通訊

    鴻蒙
    的頭像 發(fā)表于 10-10 10:36 ?250次閱讀

    物聯(lián)網(wǎng)行業(yè)中MQTT通信協(xié)議詳解以及使用

    ,該協(xié)議構建于TCP/IP協(xié)議上,由IBM在1999年發(fā)布。 MQTT最大優(yōu)點在于, 用極少的代碼和有限的帶寬,為連接遠程設備提供實時可靠的消息服務 。 作為一種低開銷、低帶寬占用的即時通訊協(xié)議,使其
    的頭像 發(fā)表于 09-20 17:08 ?1410次閱讀
    物聯(lián)網(wǎng)行業(yè)中MQTT通信協(xié)議詳解以及使用

    對等通訊協(xié)議有哪些類型

    對等通訊協(xié)議(Peer-to-Peer Protocols)是計算機網(wǎng)絡中允許兩個或多個節(jié)點直接相互通信而無需通過中間服務器的協(xié)議。這類協(xié)議在文件共享、即時通信、區(qū)塊鏈技術等領域有廣泛應用。以下
    的頭像 發(fā)表于 09-09 17:11 ?405次閱讀

    Meta旗下社交平臺Threads推出新功能

    Meta旗下的新興社交平臺Threads近期宣布了一系列新功能的推出,旨在為企業(yè)用戶和數(shù)字創(chuàng)作者提供更加便捷和強大的內容管理工具。此次更新不僅豐富了平臺的交互體驗,還進一步提升了數(shù)據(jù)透明度與發(fā)布效率。
    的頭像 發(fā)表于 08-16 18:00 ?1212次閱讀

    潤開鴻“龍芯+OpenHarmony”開發(fā)平臺DAYU431先鋒派新品發(fā)布

    潤開鴻基于全新龍芯2K0300芯片平臺的重磅新品潤開鴻HH-SCDAYU431先鋒派開發(fā)平臺正式上市,成為潤開鴻DAYU系列產(chǎn)品中符合OpenHarmony生態(tài)兼容性標準的第三款龍芯芯片平臺
    的頭像 發(fā)表于 08-07 14:50 ?514次閱讀
    潤開鴻“龍芯+<b class='flag-5'>OpenHarmony</b>”開發(fā)<b class='flag-5'>平臺</b>DAYU431先鋒派新品發(fā)布

    直擊HDC2024:海思攜手OpenHarmony,產(chǎn)品力+生態(tài)圈引爆AIoT場景應用

    海思攜手OpenHarmony,其構成的核心競爭力是什么?帶來哪些物聯(lián)網(wǎng)場景體驗的提升?海思與OpenHarmony合作有哪些階段性的成果?跟隨電子發(fā)燒友記者的腳步,我們一起來海思+OpenH
    的頭像 發(fā)表于 06-28 09:15 ?4708次閱讀
    直擊HDC2024:海思攜手<b class='flag-5'>OpenHarmony</b>,產(chǎn)品力+生態(tài)圈引爆AIoT<b class='flag-5'>場景</b>應用

    潤開鴻全場景應用開發(fā)實訓平臺通過OpenHarmony兼容性測評

    近日,江蘇潤開鴻數(shù)字科技有限公司(以下簡稱“潤開鴻”)基于OpenHarmony的全場景應用開發(fā)實訓平臺通過OpenHarmony 3.2. Release版本兼容性測評,為高校開展
    的頭像 發(fā)表于 01-22 10:08 ?702次閱讀

    潤開鴻基于OpenHarmony的全場景應用開發(fā)實訓平臺通過兼容性測評

    近日,江蘇潤開鴻數(shù)字科技有限公司(以下簡稱“潤開鴻”)基于OpenHarmony的全場景應用開發(fā)實訓平臺通過OpenHarmony3.2.Release版本兼容性測評,為高校開展
    的頭像 發(fā)表于 01-20 08:02 ?544次閱讀
    潤開鴻基于<b class='flag-5'>OpenHarmony</b>的全<b class='flag-5'>場景</b>應用開發(fā)實訓<b class='flag-5'>平臺</b>通過兼容性測評

    歐盟強制科技巨頭遵守新規(guī),24家公司聯(lián)手指控谷歌、亞馬遜

     其中,根據(jù)歐盟《數(shù)字市場法案》,用戶規(guī)模超4.5億、市值達750億歐元(約合812億美元)以上者將被視作“看門人”,需嚴格遵守歐盟規(guī)定,例如開放即時通訊應用互通性,設定設備預裝應用由用戶決定等。此外,不得實施“偏袒自家服務”。
    的頭像 發(fā)表于 01-17 10:38 ?666次閱讀

    資訊速遞 | 廈門大學OpenHarmony技術俱樂部正式揭牌成立

    海嘉里樓報告廳舉行。 嘉賓合影 OpenHarmony是由開放原子開源基金會(OpenAtom Foundation)孵化及運營的開源項目,目標是面向全場景、全連接、全智能時代,基于開源的方式,搭建一
    的頭像 發(fā)表于 01-02 16:51 ?505次閱讀
    資訊速遞 | 廈門大學<b class='flag-5'>OpenHarmony</b>技術俱樂部正式揭牌成立

    【飛騰派4G版免費試用】3.JITSI視頻會議想開就開

    時長的會議軟件呢?答案是有的,你只需要在 飛騰派 上搭建JITSI ,就可以擁有一個開源的、安全、支持視頻會議和即時通訊平臺。 什么是JITSI Jitsi Meet 是一個開源的、安全、支持視頻會議
    發(fā)表于 12-25 18:44
    主站蜘蛛池模板: 国产成人精品一区二区三区视频| 两个奶被男人揉了一个晚上| 久久国产精品免费网站| 年轻老师毛茸茸自由性| 王雨纯羞羞| 神马伦理2019影院不卡片| 污污内射在线观看一区二区少妇 | 午夜电影三级还珠格格| 亚洲精品第一页| 99久久99久久久99精品齐| Zoofilivideo人馿交| 国产人妻麻豆蜜桃色在线| 激情床戏视频片段有叫声| 麻豆AV福利AV久久AV| 色偷偷7777www| 中文字幕精品在线观看| sihu国产精品永久免费| 久久久免费热线精品频| 亚洲国产AV精品卡一卡二| 国产人妻人伦精品无码.麻豆| 女人夜夜春| 99riav9 精品香蕉免费大视频| 久久免费视频1| 亚洲中文字幕日产乱码2020| 国产 日韩 欧美 综合 激情| 青青草原免费在线| 99精品国产免费观看视频| 久久精品国产在热亚洲完整版| 亚洲欧美精品无码一区二在线| 国产精品国产三级国产专区53| 秋霞电影午夜伦午夜| 一个人在线观看免费中文www| 国产啪精品视频网免费| 欧美一级情欲片在线| 国产AV无码一二三区视频| 美女视频黄色的| 2023国产精品一卡2卡三卡4卡| 久久9精品区-无套内射无码| 亚洲大片免费| 国内精品欧美久久精品| 亚洲精品tv久久久久久久久久|