微信小程序实时聊天WebSocket


Posted in Javascript onJuly 05, 2018

本文实例为大家分享了微信小程序实时聊天WebSocket的具体代码,供大家参考,具体内容如下

1.所有监听事件先在onload监听。

// pages/index/to_news/to_news.js 
var app = getApp();
var socketOpen = false;
var SocketTask = false;
var url = 'ws://192.168.0.120:7011';
Page({
 data: {
  inputValue: '',
  returnValue: '',
 },
 onLoad: function (options) {
 },
 onReady: 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)
   },
  })
  if (SocketTask) {
   SocketTask.onOpen(res => {
    console.log('监听 WebSocket 连接打开事件。', res)
   })
   SocketTask.onClose(onClose => {
    console.log('监听 WebSocket 连接关闭事件。', onClose)
   })
   SocketTask.onError(onError => {
    console.log('监听 WebSocket 错误。错误信息', onError)
   })
   SocketTask.onMessage(onMessage => {
    console.log('监听WebSocket接受到服务器的消息事件。服务器返回的消息', onMessage)
   })
  }
 },
 
 // 提交文字
 submitTo: function (e) {
  let that = this;
  that.data.allContentList.push({that.data.inputValue });
  that.setData({
   allContentList: that.data.allContentList
  })
  var data = {
   text: that.data.inputValue
  }
  if (socketOpen) {
   // 如果打开了socket就发送数据给服务器
   sendSocketMessage(data)
  }
 },
 bindKeyInput: function (e) {
  this.setData({
   inputValue: e.detail.value
  })
 },
 
 onHide: function () {
   SocketTask.close(function (close) {
    console.log('关闭 WebSocket 连接。', close)
   })
 },
})
 
//通过 WebSocket 连接发送数据,需要先 wx.connectSocket,并在 wx.onSocketOpen 回调之后才能发送。
function sendSocketMessage(data) {
 console.log('通过 WebSocket 连接发送数据')
 if (socketOpen) {
  SocketTask.send({data: JSON.stringify(data)
  }, function (res) {
   console.log('已发送', res)
  })
 } else {
  socketMsgQueue.push(msg)
 }
}

html

<input type="text" bindinput="bindKeyInput" value='{{inputValue}}' placeholder="" />
<button bindtap="submitTo" class='user_input_text'>发送</button>

微信小程序实时聊天WebSocket

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript 克隆数组最简单的方法
Feb 12 Javascript
jQuery教程 $()包装函数来实现数组元素分页效果
Aug 13 Javascript
extjs 分页使用jsp传递数据示例
Jul 29 Javascript
4种JavaScript实现简单tab选项卡切换的方法
Jan 06 Javascript
15位和18位身份证JS校验的简单实例
Jul 18 Javascript
IOS中safari下的select下拉菜单文字过长不换行的解决方法
Sep 26 Javascript
微信小程序(三):网络请求
Jan 13 Javascript
jQuery实现ajax无刷新分页页码控件
Feb 28 Javascript
React-Native 组件之 Modal的使用详解
Aug 08 Javascript
Angular 作用域scope的具体使用
Dec 11 Javascript
kafka调试中遇到Connection to node -1 could not be established. Broker may not be available.
Sep 17 Javascript
vue v-for 点击当前行,获取当前行数据及event当前事件对象的操作
Sep 10 Javascript
vue v-model实现自定义样式多选与单选功能
Jul 05 #Javascript
基于vue展开收起动画的示例代码
Jul 05 #Javascript
微信小程序实现星级评分和展示
Jul 05 #Javascript
vue-router history模式下的微信分享小结
Jul 05 #Javascript
微信小程序实现运动步数排行功能(可删除)
Jul 05 #Javascript
微信小程序之批量上传并压缩图片的实例代码
Jul 05 #Javascript
JavaScript控制浏览器全屏显示简单示例
Jul 05 #Javascript
You might like
php简单的会话类代码
2011/08/08 PHP
Thinkphp使用mongodb数据库实现多条件查询方法
2014/06/26 PHP
PHP生成随机密码方法汇总
2015/08/27 PHP
php中session_id()函数详细介绍,会话id生成过程及session id长度
2015/09/23 PHP
php实现 master-worker 守护多进程模式的实例代码
2019/07/20 PHP
关于hashchangebroker和statehashable的补充文档
2011/08/08 Javascript
Jquery上传插件 uploadify v3.1使用说明
2012/06/18 Javascript
自己编写的类似JS的trim方法
2013/10/09 Javascript
JavaScript获取当前网页标题(title)的方法
2015/04/03 Javascript
Javascript+CSS3实现进度条效果
2016/10/28 Javascript
easyUI实现(alert)提示框自动关闭的实例代码
2016/11/07 Javascript
Javascript之面向对象--封装
2016/12/02 Javascript
jquery 手势密码插件
2017/03/17 Javascript
Javascript继承机制详解
2017/05/30 Javascript
使用3D引擎threeJS实现星空粒子移动效果
2020/09/13 Javascript
JS的函数调用栈stack size的计算方法
2018/06/24 Javascript
vue-cli2.0转3.0之项目搭建的详细步骤
2018/12/11 Javascript
layui动态渲染生成左侧3级菜单的方法(根据后台返回数据)
2019/09/23 Javascript
微信小程序语音同步智能识别的实现案例代码解析
2020/05/29 Javascript
vue离开当前页面触发的函数代码
2020/09/01 Javascript
antd-日历组件,前后禁止选择,只能选中间一部分的实例
2020/10/29 Javascript
vuex的使用步骤
2021/01/06 Vue.js
[04:00]DOTA2解说界神雕侠侣 CJ第四天谷子现场过生日
2013/07/30 DOTA
[01:04:01]2014 DOTA2华西杯精英邀请赛5 24 DK VS VG
2014/05/25 DOTA
约瑟夫问题的Python和C++求解方法
2015/08/20 Python
Python 实现淘宝秒杀的示例代码
2018/01/02 Python
Python使用matplotlib模块绘制图像并设置标题与坐标轴等信息示例
2018/05/04 Python
检测python爬虫时是否代理ip伪装成功的方法
2019/07/12 Python
基于python3生成标签云代码解析
2020/02/18 Python
Python Tornado批量上传图片并显示功能
2020/03/26 Python
AVIS安飞士奥地利租车官网:提供奥地利、欧洲和全世界汽车租赁
2016/11/29 全球购物
Final类有什么特点
2012/04/25 面试题
人力资源主管的岗位职责
2014/03/15 职场文书
禁毒宣传工作方案
2014/05/23 职场文书
职工食堂管理制度
2015/08/06 职场文书
go语言中切片与内存复制 memcpy 的实现操作
2021/04/27 Golang