微信小程序 网络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 相关文章推荐
Ext.get() 和 Ext.query()组合使用实现最灵活的取元素方式
Sep 26 Javascript
JS操作Cookies包括(读取添加与删除)
Dec 26 Javascript
javascript简单事件处理和with用法介绍
Sep 16 Javascript
分享jQuery插件的学习笔记
Jan 14 Javascript
jQuery ajax全局函数处理session过期后的ajax跳转问题
Jun 03 Javascript
javascript设计模式Constructor(构造器)模式
Aug 19 Javascript
聊一聊JS中的prototype
Sep 29 Javascript
Angular事件之不同组件间传递数据的方法
Nov 15 Javascript
微信小程序 checkbox使用实例解析
Sep 09 Javascript
使用Vue-cli3.0创建的项目 如何发布npm包
Oct 10 Javascript
前端vue-cli项目中使用img图片和background背景图的几种方法
Nov 13 Javascript
vue 中的 render 函数作用详解
Feb 28 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
实用函数9
2007/11/08 PHP
从手册去理解分析PHP session机制
2011/07/17 PHP
php基于mcrypt的加密解密实例
2014/10/27 PHP
php实现按天数、星期、月份查询的搜索框
2016/05/02 PHP
PHP封装的验证码工具类定义与用法示例
2018/08/22 PHP
写出更好的JavaScript程序之undefined篇(中)
2009/11/23 Javascript
一些常用且实用的原生JavaScript函数
2010/09/08 Javascript
iframe子页面获取父页面元素的方法
2013/11/05 Javascript
我用的一些Node.js开发工具、开发包、框架等总结
2014/09/25 Javascript
JavaScript中的ubound函数使用实例
2014/11/04 Javascript
JavaScript中利用Array和Object实现Map的方法
2015/07/27 Javascript
JQuery移动页面开发之屏幕方向改变与滚屏的实现
2015/12/03 Javascript
javascript跑马灯抽奖实例讲解
2020/04/17 Javascript
javascript实现图片左右滚动效果【可自动滚动,有左右按钮】
2016/09/19 Javascript
jQuery实现圣诞节礼物传送(花式轮播)
2016/12/25 Javascript
获取今天,昨天,本周,上周,本月,上月时间(实例分享)
2017/01/04 Javascript
详解node HTTP请求客户端 - Request
2017/05/05 Javascript
JavaScript定义函数_动力节点Java学院整理
2017/06/27 Javascript
VSCode中如何利用d.ts文件进行js智能提示
2018/04/13 Javascript
vue+axios实现文件下载及vue中使用axios的实例
2018/09/21 Javascript
深入学习JavaScript 高阶函数
2019/06/11 Javascript
JavaScript对象字面量和构造函数原理与用法详解
2020/04/18 Javascript
[02:21]DOTA2英雄基础教程 蝙蝠骑士
2013/12/16 DOTA
python 对象和json互相转换方法
2018/03/22 Python
Python中单线程、多线程和多进程的效率对比实验实例
2019/05/14 Python
Python自动化运维之Ansible定义主机与组规则操作详解
2019/06/13 Python
Python中 Global和Nonlocal的用法详解
2020/01/20 Python
flask框架自定义url转换器操作详解
2020/01/25 Python
python模拟斗地主发牌
2020/04/22 Python
详解CSS3 Media Queries中媒体属性的使用
2016/02/29 HTML / CSS
CSS3实现红包抖动效果
2020/12/23 HTML / CSS
发展部经理职责规定
2014/02/22 职场文书
2014年社区植树节活动方案
2014/02/28 职场文书
导游词之舟山普陀山
2019/11/06 职场文书
Python编程根据字典列表相同键的值进行合并
2021/10/05 Python
MySQL示例讲解数据库约束以及表的设计
2022/06/16 MySQL