微信小程序 网络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 相关文章推荐
js获取浏览器基本信息大全
Nov 27 Javascript
JavaScript插件化开发教程(六)
Feb 01 Javascript
Bootstrap每天必学之导航
Nov 26 Javascript
简单实现JS对dom操作封装
Dec 02 Javascript
使用js获取伪元素的content实例
Oct 24 Javascript
javaScript中&quot;==&quot;和&quot;===&quot;的区别详解
Mar 16 Javascript
VUE预渲染及遇到的坑
Sep 03 Javascript
vuedraggable+element ui实现页面控件拖拽排序效果
Jul 29 Javascript
详解vue的双向绑定原理及实现
May 05 Javascript
vue keep-alive列表页缓存 详情页返回上一页不刷新,定位到之前位置
Nov 26 Javascript
vue中data改变后让视图同步更新的方法
Mar 29 Vue.js
游戏开发中如何使用CocosCreator进行音效处理
Apr 14 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
一台收音机,让一家人都笑逐颜开!
2020/08/21 无线电
php 什么是PEAR?(第二篇)
2009/03/19 PHP
PHP中删除变量时unset()和null的区别分析
2011/01/27 PHP
PHP中使用socket方式GET、POST数据实例
2015/04/02 PHP
什么是OneThink oneThink后台添加插件步骤
2016/04/13 PHP
php实现查询功能(数据访问)
2017/05/23 PHP
用JQuery调用Session的实现代码
2010/10/29 Javascript
jquery关于图形报表的运用实现代码
2011/01/06 Javascript
用JavaScript修改CSS属性的代码
2013/05/06 Javascript
javascript日期格式化示例分享
2014/03/05 Javascript
jQuery中的read和JavaScript中的onload函数的区别
2014/08/27 Javascript
jquery实现根据浏览器窗口大小自动缩放图片的方法
2015/07/17 Javascript
jquery验证手机号是否正确实例讲解
2015/11/17 Javascript
AngularJs中 ng-repeat指令中实现含有自定义指令的动态html的方法
2017/01/19 Javascript
jQuery中animate()的使用方法及解决$(”body“).animate({“scrollTop”:top})不被Firefox支持的问题
2017/04/04 jQuery
详解nodejs爬虫程序解决gbk等中文编码问题
2017/04/06 NodeJs
React-router中结合webpack实现按需加载实例
2017/05/25 Javascript
javascript 数据存储的常用函数总结
2017/06/01 Javascript
详解Vue单元测试case写法
2018/05/24 Javascript
使用JavaScript实现node.js中的path.join方法
2018/08/12 Javascript
关于React动态加载路由处理的相关问题
2019/01/07 Javascript
Vue2.4+新增属性.sync、$attrs、$listeners的具体使用
2020/03/08 Javascript
解决Vue + Echarts 使用markLine标线(precision精度问题)
2020/07/20 Javascript
使用Python标准库中的wave模块绘制乐谱的简单教程
2015/03/30 Python
python使用xlrd模块读写Excel文件的方法
2015/05/06 Python
Django自定义认证方式用法示例
2017/06/23 Python
python 系统调用的实例详解
2017/07/11 Python
python获取全国城市pm2.5、臭氧等空气质量过程解析
2019/10/12 Python
python 实现矩阵按对角线打印
2019/11/29 Python
基于Python3.7.1无法导入Numpy的解决方式
2020/03/09 Python
Python 列表中的修改、添加和删除元素的实现
2020/06/11 Python
Python如何给函数库增加日志功能
2020/08/04 Python
英国最大的奢侈珠宝和手表网站:C W Sellors
2017/02/10 全球购物
大学计划书范文800字
2014/08/14 职场文书
以幸福为主题的活动方案
2014/08/22 职场文书
保护校园环境倡议书
2015/04/28 职场文书