微信小程序 网络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 相关文章推荐
iis6+javascript Add an Extension File
Jun 13 Javascript
JavaScript中使用Substring删除字符串最后一个字符
Nov 03 Javascript
js中的caller和callee属性介绍和例子
Jun 07 Javascript
Window.Open打开窗体和if嵌套代码
Apr 15 Javascript
js与jquery分别实现tab标签页功能的方法
Nov 18 Javascript
深入学习jQuery中的data()
Dec 22 Javascript
ES6中module模块化开发实例浅析
Apr 06 Javascript
laydate 显示结束时间不小于开始时间的实例
Aug 11 Javascript
详解vue axios中文文档
Sep 12 Javascript
JS中Attr的用法详解
Oct 09 Javascript
Vue 自适应高度表格的实现方法
May 13 Javascript
vue 动态生成拓扑图的示例
Jan 03 Vue.js
微信小程序 网络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验证码类(分享)
2013/08/06 PHP
PHP通过API获取手机号码归属地
2015/05/28 PHP
PHP+swoole实现简单多人在线聊天群发
2016/01/19 PHP
CI配置多数据库访问的方法
2016/03/28 PHP
JavaScript面向对象之静态与非静态类
2010/02/03 Javascript
javascript:history.go()和History.back()的区别及应用
2012/11/25 Javascript
Javascript封装DOMContentLoaded事件实例
2014/06/12 Javascript
JS Attribute属性操作详解
2016/05/19 Javascript
AngularJS表格样式简单设置方法示例
2017/03/03 Javascript
node.js基于express使用websocket的方法
2017/11/09 Javascript
基于vue 实现表单中password输入的显示与隐藏功能
2019/07/19 Javascript
javascript-hashchange事件和历史状态管理实例分析
2020/04/18 Javascript
es5 类与es6中class的区别小结
2020/11/09 Javascript
[03:40]2014DOTA2国际邀请赛 B神专访:躲箭真的很难
2014/07/13 DOTA
浅谈python抛出异常、自定义异常, 传递异常
2016/06/20 Python
python数据结构链表之单向链表(实例讲解)
2017/07/25 Python
python调用百度语音REST API
2018/08/30 Python
python实时获取外部程序输出结果的方法
2019/01/12 Python
Django框架验证码用法实例分析
2019/05/10 Python
python实现指定ip端口扫描方式
2019/12/17 Python
python 追踪except信息方式
2020/04/25 Python
英国百安居装饰建材网上超市:B&Q
2016/09/13 全球购物
Mountain Warehouse澳大利亚官网:欧洲家庭户外品牌倡导者
2016/11/20 全球购物
匡威比利时官网:Converse Belgium
2017/04/13 全球购物
Lookfantastic德国官网:英国知名美妆购物网站
2017/06/11 全球购物
澳大利亚领先的在线机械五金、园艺和存储专家:Edisons
2018/03/24 全球购物
医生自荐信
2013/10/11 职场文书
大学班级学风建设方案
2014/05/01 职场文书
商业街策划方案
2014/05/31 职场文书
深入开展党的群众路线教育实践活动心得体会
2014/11/05 职场文书
高中教师个人总结
2015/02/10 职场文书
教师个人发展总结
2015/02/11 职场文书
食品质检员岗位职责
2015/04/08 职场文书
优秀员工演讲稿
2019/06/21 职场文书
你会写请假条吗?
2019/06/26 职场文书
详解vue中v-for的key唯一性
2021/05/15 Vue.js