最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

IM聊天教程之發(fā)送圖片/視頻/語音/表情

 更新時(shí)間:2020年05月19日 11:56:20   投稿:mrr  
朋友在問如何在IM即時(shí)通訊中實(shí)現(xiàn)發(fā)送圖片視頻語音和表情呢,今天小編通過本文給大家詳細(xì)介紹下,感興趣的朋友一起看看吧

經(jīng)常有朋友問起,如何在IM即時(shí)通訊中實(shí)現(xiàn)發(fā)送圖片、視頻、語音和表情?

為此,小編特意寫了一個(gè)vue版本的Demo,實(shí)現(xiàn)了圖片視頻文件和表情的的發(fā)送,參考這個(gè)Demo源代碼,相信你就可以輕松的用Uniapp和小程序完成類似的功能。

一、圖片/視頻/語音發(fā)送

對于語音、視頻和圖片的發(fā)送,您如果有注意的話,在使用QQ或者微信的時(shí)候,當(dāng)有朋友發(fā)送圖片和視頻給您時(shí),收到后,需要等一會兒才能顯示出來。就是因?yàn)樵诎l(fā)送的時(shí)候,只發(fā)送了文件的路徑,您收到后,需要加載才能顯示出來。因?yàn)楫?dāng)前主流的IM包括微信,QQ等對于圖片和視頻的發(fā)送,通常的做法都是:

  • 上傳文件到文件服務(wù)器
  • 推送文件路徑
  • 收到文件路徑
  • 加載文件

并不會通過網(wǎng)絡(luò)直接傳送源文件,因?yàn)閷τ诖笪募膫鬏?,會影響消息的即時(shí)性。

對于文件的上傳,您可以選擇直接上傳到您自己的服務(wù)器,也可以選擇上傳到各種云服務(wù)的對象存儲服務(wù),也就是OSS上。

參考源碼:

DemoService.prototype.sendFileMessage = function (type,content) {
  let uploadResult = restapi.uploadFile(content);
  let message = new Message(type, uploadResult.url);
  uploadResult.promise.then(() => {
    this.publish(message);
  },() => {
    var error = new Message(MessageType.TEXT, "文件上傳失敗.");
    this.messages.unshift(error)
  });
  return uploadResult.promise;
};

云服務(wù)的OSS具有更好的穩(wěn)定性和高可用性,上傳的速度也有保證,另外也可以和CDN配合,所以我們建議用GoEasy配合OSS服務(wù)來實(shí)現(xiàn)圖片和視頻的發(fā)送。

在本文的源碼里,選擇了使用阿里云的OSS作為文件上傳服務(wù)器,您也可以切換為您自己實(shí)現(xiàn)的文件上傳服務(wù)器,或者選擇其他云服務(wù)的OSS,原理都是一樣的。

二、發(fā)送表情

表情的發(fā)送也是非常簡單的,只是對于一些第一次實(shí)現(xiàn)表情發(fā)送的同學(xué)來說,需要一個(gè)思路而已。

細(xì)心點(diǎn)的朋友,肯定有發(fā)現(xiàn),當(dāng)我們在QQ上聊天的時(shí)候,我們輸入一個(gè)反斜杠+“cy”, 就像這樣:/cy ,QQ就會立即顯示為一個(gè)呲牙的表情,就像下圖一樣:

哈哈哈,相信你已經(jīng)心里已經(jīng)明白了十之八九了,對吧?

沒錯(cuò),表情在發(fā)送的過程中其實(shí)就是發(fā)一個(gè)像“/cy”這樣定義好的的字符串,在對方收到后“翻譯”成表情而已。

那為什么不直接發(fā)圖片,而要進(jìn)行這么復(fù)雜的“翻譯”呢?

因?yàn)樽址葓D片更小,發(fā)送的速度更快,用戶體驗(yàn)更好。一個(gè)系統(tǒng)中的用戶成千上萬,用字符串可以節(jié)約大量的帶寬,節(jié)約系統(tǒng)資源。

原理講明白了,我們就開始干活兒吧:

第一步、定義表情

定義一個(gè)key value的對象,key作為表情標(biāo)簽,value則為每個(gè)表情標(biāo)簽對應(yīng)的圖片:

let expressions = {
  "[risus]": './images/risus.png',
  "[kiss]": './images/kiss.png',
  "[cry]": './images/cry.png',
  "[die]": './images/die.png',
  "[anger]": './images/anger.png',
}

然后畫一個(gè)表情選擇的界面:

第二步、選擇表情

為每個(gè)圖片的onclick事件中傳入這個(gè)表情的字符串標(biāo)簽,當(dāng)用戶點(diǎn)擊的時(shí)候,將表情的標(biāo)簽寫入輸入框,就成為了一個(gè)普通的字符串。在發(fā)送的時(shí)候,發(fā)送的其實(shí)就是這個(gè)表情的標(biāo)簽,也就是一個(gè)字符串。

<div class="goeasy-expression">
      <div :class="[appearanceClass, 'goeasy-appearance']" @click="show = true">{{text}}</div>
      <div class="expression-container" v-show="show">
        <div class="expression-icon-content">
          <div class="expression-icon__item"
             v-for="expression in list"
             :key="expression.id"
             @click="selectExpression(expression)">
            <img :src="expressions[expression.tag]">
          </div>

        </div>
        <div class="close-expression" @click="show = false"></div>
      </div>
    </div>

第三步、收到表情和展示表情

當(dāng)對方收到一個(gè)字符串后,跟第一步定義的key-value列表去匹配,如果能找到對應(yīng)的表情,就在頁面上展示對應(yīng)的表情圖片,如果找不到,就是一個(gè)普通的文本信息。

原理講清楚了后,具體實(shí)現(xiàn)是不是很簡單了?

參考我們提供的Demo源代碼,相信你很快就能掌握實(shí)現(xiàn)方法。

Demo源碼:https://gitee.com/goeasy-io/GoEasyDemo-vue-AudioPictureVideo

總結(jié)

到此這篇關(guān)于IM聊天教程之發(fā)送圖片/視頻/語音/表情的文章就介紹到這了,更多相關(guān)IM聊天發(fā)送視頻內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • WordPress一鍵切換為其他用戶身份登錄功能方法

    WordPress一鍵切換為其他用戶身份登錄功能方法

    這篇文章主要介紹了WordPress一鍵切換為其他用戶身份登錄功能方法
    2021-09-09
  • 詳解https 加密完整過程

    詳解https 加密完整過程

    這篇文章主要介紹了詳解https 加密完整過程的相關(guān)資料,這里主要說名https加密及通信的方法,需要的朋友可以參考下
    2017-07-07
  • IDEA2019.3在Plugins中搜索不到translation的解決

    IDEA2019.3在Plugins中搜索不到translation的解決

    這篇文章主要介紹了IDEA2019.3在Plugins中搜索不到translation的解決,文中通過圖文的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • 在VScode中配置ROS環(huán)境的詳細(xì)過程

    在VScode中配置ROS環(huán)境的詳細(xì)過程

    這篇文章主要介紹了在VScode中配置ROS環(huán)境,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-07-07
  • 使用TeXLive2022和VSCode安裝配置步驟(LaTeX寫論文)

    使用TeXLive2022和VSCode安裝配置步驟(LaTeX寫論文)

    這篇文章主要介紹了使用TeXLive2022和VSCode的安裝配置步驟,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-07-07
  • 一文分享如何使用vscode打斷點(diǎn)

    一文分享如何使用vscode打斷點(diǎn)

    這篇文章主要給大家介紹了關(guān)于如何使用vscode打斷點(diǎn)的相關(guān)資料,最近用vscode進(jìn)行斷點(diǎn)調(diào)試的時(shí)候總是不順利,遂自己總結(jié)了斷點(diǎn)調(diào)試的方法,需要的朋友可以參考下
    2023-07-07
  • 小項(xiàng)目中管理npm包版本的思路與方法

    小項(xiàng)目中管理npm包版本的思路與方法

    這篇文章主要給大家介紹了關(guān)于小項(xiàng)目中該如何管理npm包版本的思路與方法,npm包版本管理是非常重要的,文章通過示例代碼介紹的很詳細(xì),需要的朋友可以參考下
    2021-06-06
  • Redhat持久化日志實(shí)戰(zhàn)示例詳解

    Redhat持久化日志實(shí)戰(zhàn)示例詳解

    這篇文章主要為大家介紹了Redhat持久化日志實(shí)戰(zhàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • vscode入門教程之頁面啟動與代碼調(diào)試

    vscode入門教程之頁面啟動與代碼調(diào)試

    VScode是微軟推出的一款輕量級的編輯器,采用了和VS相同的UI界面。今天小編給大家?guī)硪黄绾问褂胿scode來進(jìn)行最基本的工作的小教程,希望大家能夠喜歡
    2020-01-01
  • Git入門【推薦】

    Git入門【推薦】

    本文主要介紹了Git入門的相關(guān)知識,具有很好的參考價(jià)值。下面跟著小編一起來看下吧
    2017-03-03

最新評論

方山县| 勃利县| 漾濞| 田东县| 丽江市| 博湖县| 德阳市| 驻马店市| 安康市| 永丰县| 澳门| 甘德县| 克山县| 南部县| 西乌| 白城市| 瑞昌市| 龙海市| 邹城市| 仁布县| 迭部县| 册亨县| 阳东县| 郸城县| 永福县| 巩义市| 林西县| 正宁县| 大方县| 天台县| 武陟县| 玉溪市| 湘潭市| 寻甸| 白山市| 凤翔县| 昌图县| 金溪县| 乌恰县| 布尔津县| 新宾|