小程序的对话集合

最近在写小程序的对话列表,主要是JSON数据的处理。

主要问题:

1.调用微信提供的WebSocketApi,这个在官方有详细的例子。

2.对接收和发送的JSON数据进行处理。

3.处理完后,显示在布局中。

主要是用的 WebSocket协议。
微信封装的方法有:

这里写图片描述

1.wx.connectSocket(OBJECT)
创建一个 WebSocket 连接;一个微信小程序同时只能有一个 WebSocket 连接,如果当前已存在一个 WebSocket 连接,会自动关闭该连接,并重新创建一个 WebSocket 连接。

2.wx.onSocketOpen(CALLBACK)
监听WebSocket连接打开事件。

3.wx.onSocketError(CALLBACK)
监听WebSocket错误。

4.wx.sendSocketMessage(OBJECT)
通过 WebSocket 连接发送数据,需要先 wx.connectSocket,并在 wx.onSocketOpen 回调之后才能发送。

5.wx.onSocketMessage(CALLBACK)
监听WebSocket接受到服务器的消息事件。

6.wx.closeSocket()
关闭WebSocket连接。wx.onSocketClose(CALLBACK)
监听WebSocket关闭。

一、接收信息代码,用的是JSON.parse()方法。

//注意这里的that是 let that = this;
wx.onSocketMessage(function(res) {
        console.log('收到服务器内容:' + res.data)
        console.log('收到内容:' + res.data.content)
        //方法将一个符合JSON语法的字符串解析成一个对应类型的值或对象
        var message = JSON.parse(res.data);
        //把数据放入变量allContentList中
        that.data.allContentList.push(message);
        //保存数据
        that.setData({
           allContentList: that.data.allContentList
        });
        //把数据存储到本地
        wx.setStorage({
          key:mthat.data.orderid,
          data:that.data.allContentList
        })
      })

二、发送信息代码,和接收正好相反用的是JSON.stringify()方法,并且是多了一个wx.sendSocketMessage方法。

      var message = new Object;
      message.to= '1';//接受者
      message.from = '2';//发送者
      message.content = '你好';
      message.type= "doctxt";
      message.name='张三';

      // 用于从一个对象解析出字符串
      JSON.stringify(message);

      let that = this;
      //把数据放入变量allContentList中
      that.data.allContentList.push(message);
      //保存数据
      that.setData({
         allContentList: that.data.allContentList
      })   
      //发送数据
      wx.sendSocketMessage({
        data:JSON.stringify(message)
      });
      //把数据存储到本地
      wx.setStorage({
        key:mthat.data.orderid,
        data:that.data.allContentList
      })

这是wxml文件的代码:

<view class="wrap"> 
    <button bindtap="setClear">clear</button>
    <view class="containerBox" style="">
       <view wx:for="{{allContentList}}">
            <view wx:if="{{item.to == message_to}}"  class="message-text" style="">{{item.content}}</view>

            <view   wx:if="{{item.to != message_to}}" class="message-sent-text">{{item.content}}</view>
       </view>
    </view>
    <form bindsubmit="formSubmit">
    <view class="handleBox">
        <input  class="input_submit" name="sendinput" placeholder="输入聊天的内容" value="{{inputTemp}}" bindinput="bindKeyInput"/>
        <button type="default" class="btn_submit" size="mini" bindtap="submit" formType="submit">发送</button>
    </view>
    </form>
</view>

效果图如下:

这里写图片描述

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值