微信小程序 网络API Websocket详解


Posted in Javascript onNovember 09, 2016

微信小程序 网络API:

wx.connectSocket(OBJECT)

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

OBJECT参数说明:

参数 类型 必填 说明
url String 开发者服务器接口地址,必须是HTTPS协议,且域名必须是后台配置的合法域名
data Object 请求的数据
header Object HTTP Header
method String 默认是GET,有效值为: OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
success Function 接口调用成功的回调函数
fail Function 接口调用失败的回调函数
complete Function 接口调用结束的回调函数(调用成功、失败都会执行)

示例代码:

wx.connectSocket({
 url:"test.php",
 data:{
 x:"",
 y:""
 },
 header:{ 
 'content-type': 'application/json'
 },
 method:"GET"
})

wx.onSocketOpen(CALLBACK)

​ 监听WebSocket连接打开事件

示例代码:

wx.connectSocket({
 url:"test.php"
});
wx.onSocketOpen(function(res){
 console.log("WebSocket连接已打开!")
})

wx.onSocketError(CALLBACK)

​ 监听WebSocket错误

示例代码:

wx.connectSocket({
 url:"test.php"
});
wx.onSocketOpen(function(res){
 console.log("WebSocket连接已打开!")
})
wx.onSocketError(function(res){
 console.log("WebSocket连接打开失败,请检查!")
})

wx.sendSocketMessage(OBJECT)

​ 通过WebSocket连接发送数据,需要先wx.connectSocket,并在wx.onSocketOpen回调之后才能发送。
OBJECT参数说明:

参数 类型 必填 说明
data String 需要发送的内容

示例代码:

var socketOpen = false;
var socketMsgQueue = []
wx.connectSocket({
 url:"test.php"
});

wx.onSocketOpen(function(res){
 socketOpen = true;
 for(var i = 0 ; i < socketMsgQueue.length; i++){
  sendSocketMessage(socketMsgQueue[i])
 }
 socketMsgQueue = [];
})

function sendSocketMessage(msg){
 if(socketOpen){
 wx.sendSocketMessage({
  data:msg
 });
 }else{
  socketMsgQueue.push(msg)
 }
}

wx.onSocketMessage(CALLBACK)

​ 监听WebSocket接受到服务器的消息事件

CALLBACK返回参数:

参数 类型 说明
data String 服务器返回的消息

示例代码:

wx.connectSocket({
 url:"test.php"
});

wx.onSocketMessage(function(res){
 console.log("收到服务器内容:" + res.data)
})

wx.closeSocket()

​ 关闭WebSocket连接

wx.onSocketClose(CALLBACK)

​ 监听WebSocket关闭

wx.connectSocket({
 url:"test.php"
});

//注意这里有时序问题,
//如果wx.connectSocket还没回调wx.onSocketOpen,而先调用wx.closeSocket,那么就做不到关闭WebSocket的目的
//必须在WebSocket打开期间调用wx.closeSocket才能关闭
wx.onSocketOpen(function(){
 wx.closeSocket()
})

wx.onSocketClose(function(res){
 console.log("WebSocket 已关闭!")
})

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Javascript 相关文章推荐
Javascript倒计时代码
Aug 12 Javascript
表头固定(利用jquery实现原理介绍)
Nov 08 Javascript
JavaScript实现两个Table固定表头根据页面大小自行调整
Jan 03 Javascript
javascript中slice(),splice(),split(),substring(),substr()使用方法
Mar 13 Javascript
如何使用HTML5地理位置定位功能
Apr 27 Javascript
JavaScript的MVVM库Vue.js入门学习笔记
May 03 Javascript
微信小程序scroll-x失效的完美解决方法
Jul 18 Javascript
js实现图片上传并预览功能
Aug 06 Javascript
electron中使用bootstrap的示例代码
Nov 06 Javascript
使用NestJS开发Node.js应用的方法
Dec 03 Javascript
JS温故而知新之变量提升和时间死区
Jan 27 Javascript
解决layui使用layui-icon出现默认图标的问题
Sep 11 Javascript
微信小程序 网络API 上传、下载详解
Nov 09 #Javascript
微信小程序 网络API发起请求详解
Nov 09 #Javascript
etmvc+jQuery EasyUI+combobox多值操作实现角色授权实例
Nov 09 #Javascript
jQuery模拟实现的select点击选择效果【附demo源码下载】
Nov 09 #Javascript
微信小程序 loading 详解及实例代码
Nov 09 #Javascript
微信小程序 toast 详解及实例代码
Nov 09 #Javascript
jQuery模拟完美实现经典FLASH导航动画效果【附demo源码下载】
Nov 09 #Javascript
You might like
不错的一篇面向对象的PHP开发模式(简写版)
2007/03/15 PHP
PHP中Date()时间日期函数的使用方法小结
2011/04/20 PHP
php url路由入门实例
2014/04/23 PHP
jQuery动态添加的元素绑定事件处理函数代码
2011/08/02 Javascript
JavaScript设计模式之工厂方法模式介绍
2014/12/28 Javascript
javascript 实现map集合
2015/04/03 Javascript
简介JavaScript中search()方法的使用
2015/06/06 Javascript
JavaScript中字符串拼接的基本方法
2015/07/07 Javascript
学习javascript面向对象 理解javascript对象
2016/01/04 Javascript
BootstrapTable与KnockoutJS相结合实现增删改查功能【一】
2016/05/10 Javascript
JS中的数组方法笔记整理
2016/07/26 Javascript
微信和qq时间格式模板实例详解
2016/10/21 Javascript
js基础之DOM中document对象的常用属性方法详解
2016/10/28 Javascript
JS简单获取当前日期和农历日期的方法
2017/04/17 Javascript
jQuery遮罩层实例讲解
2017/05/11 jQuery
JavaScript设计模式之单例模式详解
2017/06/09 Javascript
微信小程序使用video组件播放视频功能示例【附源码下载】
2017/12/08 Javascript
在小程序中使用Echart图表的示例代码
2018/08/02 Javascript
详解ES6中的 Set Map 数据结构学习总结
2018/11/06 Javascript
原生js实现日历效果
2020/03/02 Javascript
[01:00:25]2018DOTA2亚洲邀请赛3月30日 小组赛A组 VG VS Liquid
2018/03/31 DOTA
使用python获取CPU和内存信息的思路与实现(linux系统)
2014/01/03 Python
python 捕获shell脚本的输出结果实例
2017/01/04 Python
Python编程二分法实现冒泡算法+快速排序代码示例
2018/01/15 Python
matplotlib作图添加表格实例代码
2018/01/23 Python
Python pandas实现excel工作表合并功能详解
2019/08/29 Python
Python基于paramunittest模块实现excl参数化
2020/04/26 Python
python批量生成条形码的示例
2020/10/10 Python
德国健康生活方式网上商店:Landkaufhaus Mayer
2019/03/12 全球购物
英语硕士生求职简历的自我评价
2013/10/15 职场文书
网络事业创业计划书范文
2014/01/09 职场文书
消防安全检查制度
2014/02/04 职场文书
《望洞庭》教学反思
2014/02/16 职场文书
《长江之歌》教学反思
2014/04/17 职场文书
2014年百日安全生产活动总结
2014/05/04 职场文书
2015年建党94周年演讲稿
2015/03/19 职场文书