亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 課堂 > 小程序 > 正文

微信小程序WebSocket實現聊天對話功能

2020-03-21 16:15:21
字體:
來源:轉載
供稿:網友

本文實例為大家分享了微信小程序WebSocket實現聊天對話功能的具體代碼,供大家參考,具體內容如下

js

var app = getApp();var socketOpen = false;var frameBuffer_Data, session, SocketTask;var url = 'ws://請填寫您的長鏈接接口地址';var upload_url ='請填寫您的圖片上傳接口地址'Page({ data: {  user_input_text: '',//用戶輸入文字  inputValue: '',  returnValue: '',  addImg: false,  //格式示例數據,可為空  allContentList: [],  num: 0 }, // 頁面加載 onLoad: function () {  this.bottom(); }, onShow: function (e) {  if (!socketOpen) {   this.webSocket()  } }, // 頁面加載完成 onReady: function () {  var that = this;  SocketTask.onOpen(res => {   socketOpen = true;   console.log('監聽 WebSocket 連接打開事件。', res)  })  SocketTask.onClose(onClose => {   console.log('監聽 WebSocket 連接關閉事件。', onClose)   socketOpen = false;   this.webSocket()  })  SocketTask.onError(onError => {   console.log('監聽 WebSocket 錯誤。錯誤信息', onError)   socketOpen = false  })  SocketTask.onMessage(onMessage => {   console.log('監聽WebSocket接受到服務器的消息事件。服務器返回的消息', JSON.parse(onMessage.data))   var onMessage_data = JSON.parse(onMessage.data)   if (onMessage_data.cmd == 1) {    that.setData({     link_list: text    })    console.log(text, text instanceof Array)    // 是否為數組    if (text instanceof Array) {     for (var i = 0; i < text.length; i++) {      text[i]     }    } else {     }    that.data.allContentList.push({ is_ai: true, text: onMessage_data.body });    that.setData({     allContentList: that.data.allContentList    })    that.bottom()   }  }) }, webSocket: function () {  // 創建Socket  SocketTask = wx.connectSocket({   url: url,   data: 'data',   header: {    'content-type': 'application/json'   },   method: 'post',   success: function (res) {    console.log('WebSocket連接創建', res)   },   fail: function (err) {    wx.showToast({     title: '網絡異常!',    })    console.log(err)   },  }) },  // 提交文字 submitTo: function (e) {  let that = this;  var data = {   body: that.data.inputValue,  }   if (socketOpen) {   // 如果打開了socket就發送數據給服務器   sendSocketMessage(data)   this.data.allContentList.push({ is_my: { text: this.data.inputValue }});   this.setData({    allContentList: this.data.allContentList,    inputValue: ''   })    that.bottom()  } }, bindKeyInput: function (e) {  this.setData({   inputValue: e.detail.value  }) },  onHide: function () {  SocketTask.close(function (close) {   console.log('關閉 WebSocket 連接。', close)  }) }, upimg: function () {  var that = this;   wx.chooseImage({    sizeType: ['original', 'compressed'],    success: function (res) {     that.setData({      img: res.tempFilePaths     })     wx.uploadFile({      url: upload_url,      filePath: res.tempFilePaths,      name: 'img',      success: function (res) {       console.log(res)        wx.showToast({         title: '圖片發送成功!',         duration: 3000        });      }     })      that.data.allContentList.push({ is_my: { img: res.tempFilePaths } });     that.setData({      allContentList: that.data.allContentList,     })     that.bottom();    }   }) },   addImg: function () {  this.setData({   addImg: !this.data.addImg  })  }, // 獲取hei的id節點然后屏幕焦點調轉到這個節點  bottom: function () {  var that = this;  this.setData({   scrollTop: 1000000  }) },}) //通過 WebSocket 連接發送數據,需要先 wx.connectSocket,并在 wx.onSocketOpen 回調之后才能發送。function sendSocketMessage(msg) { var that = this; console.log('通過 WebSocket 連接發送數據', JSON.stringify(msg)) SocketTask.send({  data: JSON.stringify(msg) }, function (res) {  console.log('已發送', res) })} 

wxml

<view class='page_bg' wx:if='{{block}}' bindtap='hide_bg' /><view class='btn_bg' wx:if='{{block}}'> <view wx:for="{{link_list}}" wx:key='index'>  <button class="sp_tit" id='{{index}}' bindtap='list_item'>查看詳情 {{item}} </button> </view></view><scroll-view class="history" scroll-y="true" scroll-with-animation scroll-top="{{scrollTop}}">  <block wx:key="{{index}}" wx:for="{{allContentList}}">  <!-- <view>   <text class='time'>{{time}}</text>  </view> -->  <view class='my_right' wx:if="{{item.is_my}}">   <view class='p_r' wx:if='{{item.is_my.text}}'>    <text class='new_txt'><text class='new_txt_my'>{{item.is_my.text}}</text></text>    <view class='sanjiao my'></view>    <image class='new_img' src='/images/test.jpg'></image>   </view>   <view class='p_r' wx:if='{{item.is_my.img}}' bindtap='my_audio_click' data-id='{{index}}'>    <text class='new_txt'> </text>    <view class='my_img_bg'>    <image class='my_audio' src='{{img}}'></image></view>    <view class='sanjiao my'></view>    <image class='new_img' src='/images/test.jpg'></image>   </view>  </view>  <!-- <view class='you_left' id='id_{{allContentList.length}}'> -->  <view class='you_left' id='id_{{allContentList.length}}' wx:key="{{index}}" wx:if="{{item.is_ai}}">   <view class='p_r'>    <image class='new_img' src='/images/chac.jpg'></image>    <view class='sanjiao you'></view>    <view class='new_txt'>     <view class='new_txt_ai'>      <!-- {{item.text}} -->      <block wx:for='{{item.is_two}}' wx:key='index'>       <text wx:if='{{item.text}}'>{{item.text}}</text>       <text wx:if='{{item.a.title}}' style='color:#0000EE' bindtap='link' id='{{item.a.link}}'>{{item.a.title}}</text>      </block>     </view>    </view>   </view>  </view> </block></scroll-view><view class="sendmessage"> <image class='voice_icon' bindtap='addImg' src='/images/jia_img.png'></image> <block wx:if='{{!addImg}}'>  <input type="text" bindinput="bindKeyInput" value='{{inputValue}}' focus='{{focus}}' bindfocus="focus" confirm-type="done" placeholder="" />  <button bindtap="submitTo" class='user_input_text'>發送</button> </block> <block wx:if='{{addImg}}'>  <view class='voice_ing' bindtap="upimg">發送圖片</view> </block></view>

css

page {  background-color: #f2f2f2;  height: 100%;} .jia_img{  height: 80rpx;  width: 90rpx; } .time {  text-align: center;  padding: 5rpx 20rpx 5rpx 20rpx;  width: 200rpx;  font-size: 26rpx;  background-color: #E8E8E8; } .tab{ bottom: 120rpx;}.tab_1{ position: fixed; bottom: 50rpx; width: 200rpx; font-size: 26rpx; left: 50%; margin-left: -45rpx; height: 100rpx;}.tab_2{ right: 30rpx; position: fixed;}/* 聊天 */  .my_right {  float: right;  margin-top: 30rpx; position: relative;  right: 40rpx; } .my_audio{ height: 120rpx; width: 150rpx; position: absolute; right: 150rpx; background: white; top: 20rpx;}.my_img_bg{ height: 150rpx; width: 400rpx; position: relative; right: 0; background: white; top: 20rpx;}.you_left {  margin-top: 30rpx; float: left;  position: relative;  left: 5rpx; }  .new_img {  width: 100rpx;  height: 100rpx;  border-radius: 50%; }  .new_txt {  width: 420rpx; } .new_txt_my{ border-radius: 7px;  background-color: #fff;  margin-top: 10rpx; padding: 0rpx 30rpx 0rpx 30rpx;  float: right;}.new_txt_ai{ border-radius: 7px;  background-color: #fff;  margin-top: 10rpx; padding: 0rpx 30rpx 0rpx 30rpx;  float: left;}.sanjiao {  top: 25rpx;  position: relative;  width: 0px;  height: 0px;  border-width: 15rpx;  border-style: solid; }  .my {  border-color: transparent transparent transparent #fff; }  .you {  border-color: transparent #fff transparent transparent; }  .sendmessage {  width: 100%;  z-index: 2; display: flex;  position: fixed; bottom: 0px; background-color: #F4F4F6;  flex-direction: row;  height: 85rpx;} .voice_icon{ width: 60rpx; height: 60rpx; margin: 0 auto; padding: 10rpx 10rpx 10rpx 10rpx;}.voice_ing{ width: 90%; height: 75rpx; line-height: 85rpx; text-align: center; border-radius: 15rpx; border: 1px solid #d0d0d0;}.sendmessage_2 {  z-index: 1; position: relative; width: 100%;  display: flex;  background-color: #F4F4F6;  flex-direction: row;  height: 85rpx;}  .sendmessage input {  width: 75%;  height: 60rpx;   background-color: white;  line-height: 60rpx;  font-size: 28rpx;  border-radius: 10rpx; margin-top: 10rpx; margin-left: 20rpx; border: 1px solid #d0d0d0;  padding-left: 20rpx; } .sendmessage button {  border: 1px solid white;  width: 18%;  height: 65rpx;  background: #00CC00; color: white; line-height: 65rpx;  margin-top: 10rpx; font-size: 28rpx; }  .hei{  height: 20rpx; } .history {  height: 80%;  padding: 20rpx 20rpx 20rpx 20rpx; font-size: 14px;  line-height: 50rpx;  word-break: break-all; }  .icno_kf{ position: fixed; bottom: 160rpx; margin: 0 auto; text-align: center; left: 50%; margin-left: -40rpx; width: 100rpx; height: 100rpx; border-radius: 50%}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91日本在线视频| 性欧美xxxx视频在线观看| 97精品久久久中文字幕免费| 国产成人亚洲精品| 亚洲欧洲av一区二区| 日韩精品有码在线观看| 精品亚洲永久免费精品| 亚洲美女免费精品视频在线观看| 国产精品va在线| 欧美人在线视频| 亚洲国产精品成人av| 精品久久国产精品| 亚洲成人999| 欧美高跟鞋交xxxxxhd| 一本色道久久综合亚洲精品小说| 精品视频9999| 国产亚洲欧美日韩精品| 成人福利网站在线观看11| 亚洲天堂男人的天堂| 中文字幕国产精品| 欧美黑人xxx| 亚洲一区二区三区四区在线播放| 欧美日韩在线视频观看| 亚洲精品日韩av| 日韩网站免费观看高清| 在线观看久久av| 欧美日韩国产色| 亚洲视频在线观看网站| 91成品人片a无限观看| 一本色道久久88精品综合| 精品中文字幕在线2019| 日韩av在线一区| 亚洲一级黄色av| 国产精品久久久久久久app| 亚洲天堂网站在线观看视频| 97国产精品视频人人做人人爱| 欧美日韩在线观看视频| 国产精品普通话| 一区二区亚洲欧洲国产日韩| 国产精品一区二区三区久久| 狠狠躁夜夜躁久久躁别揉| 成人精品视频久久久久| 亚洲黄页网在线观看| 97在线观看免费高清| 亚洲成人在线网| 久久久久久尹人网香蕉| 97在线视频免费| 久久综合久久88| 日韩在线视频观看| 亚洲视频axxx| 日韩免费看的电影电视剧大全| 亚洲区在线播放| 中文字幕日韩欧美在线视频| 日韩av在线影视| 国产精品自产拍高潮在线观看| 日本精品视频在线观看| 国产亚洲精品久久久久久牛牛| 日本成人激情视频| 国产精品夜间视频香蕉| 亚洲午夜精品久久久久久久久久久久| 亚洲人成电影在线观看天堂色| 日韩成人中文电影| 91po在线观看91精品国产性色| 欧美第一淫aaasss性| 亚洲综合在线播放| 少妇久久久久久| 亚洲精品日韩久久久| 日韩在线免费av| 草民午夜欧美限制a级福利片| 欧美黑人巨大精品一区二区| 中文字幕视频在线免费欧美日韩综合在线看| 日韩av中文字幕在线播放| 国产原创欧美精品| 国产九九精品视频| 97热在线精品视频在线观看| 精品激情国产视频| 欧美激情xxxx| 97精品视频在线观看| 久久精品亚洲精品| 7m精品福利视频导航| 亚洲精品视频二区| 久久久成人精品视频| 日本一区二三区好的精华液| 日韩av片免费在线观看| 国产精品爽黄69| 欧美日韩视频在线| 国内精品免费午夜毛片| 国产成人短视频| 国产精品一区二区电影| 主播福利视频一区| 欧美视频免费在线| 日韩网站免费观看| 国产精品高潮呻吟久久av黑人| 日韩av影院在线观看| 亚洲人a成www在线影院| 亚洲社区在线观看| 成人在线小视频| 高清日韩电视剧大全免费播放在线观看| 丝袜美腿亚洲一区二区| 国产精品亚发布| 久久久久久久999精品视频| 亚洲free性xxxx护士hd| 亚洲激情电影中文字幕| 国产不卡av在线| 亚洲视频网站在线观看| 狠狠做深爱婷婷久久综合一区| 亚洲欧美日韩一区在线| 久久夜色精品国产| 亚洲精品视频免费| 国产日产亚洲精品| 亚洲乱码av中文一区二区| 在线播放精品一区二区三区| 最近日韩中文字幕中文| 黄色成人在线免费| 日韩av黄色在线观看| 日韩精品电影网| 日韩有码片在线观看| 九九精品在线播放| 欧美一级在线播放| 欧美日韩国产二区| 91在线视频一区| 亚洲mm色国产网站| 欧美日韩综合视频网址| 亚洲黄色在线观看| 成人春色激情网| 成人福利视频在线观看| 日韩美女主播视频| 日韩中文字幕久久| 欧美成人精品不卡视频在线观看| 国产精品久久久久久中文字| 欧美日韩色婷婷| 日韩精品在线视频观看| 国自产精品手机在线观看视频| 亚洲国产精品va在线| 福利微拍一区二区| 日韩电影免费在线观看中文字幕| 日韩精品中文字幕在线播放| 全球成人中文在线| 国产亚洲精品美女久久久久| 欧美激情视频在线| 精品女厕一区二区三区| 一本大道亚洲视频| 日本一区二三区好的精华液| 国产精品视频一区国模私拍| 亚洲精品美女网站| 国产午夜精品一区理论片飘花| 亚洲久久久久久久久久久| 亚洲第一区中文字幕| 亚洲精品资源美女情侣酒店| 欧洲中文字幕国产精品| 国模精品视频一区二区三区| 亚洲国产精久久久久久久| 91久久国产精品91久久性色| 精品视频在线播放免| 欧美成人手机在线| 欧洲精品在线视频| 国产精品一区专区欧美日韩| 青青久久aⅴ北条麻妃| 综合136福利视频在线| 欧美精品精品精品精品免费| 狠狠躁夜夜躁人人躁婷婷91| 69久久夜色精品国产7777| 国产99久久精品一区二区永久免费| 黄色一区二区三区|