课程表

微信小程序框架

微信小程序组件

微信小程序API

微信小程序开放接口

微信小程序工具

微信小程序设计规范

工具箱
速查手册

小程序API Websocket

当前位置:免费教程 » 移动开发 » 微信小程序

wx.connectSocket(OBJECT)


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

OBJECT参数说明:

参数类型必填说明
urlString开发者服务器接口地址,必须是 wss 协议,且域名必须是后台配置的合法域名
dataObject请求的数据
headerObjectHTTP Header , header 中不能设置 Referer
methodString默认是GET,有效值为: OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
successFunction接口调用成功的回调函数
failFunction接口调用失败的回调函数
completeFunction接口调用结束的回调函数(调用成功、失败都会执行)

示例代码:

  1. wx.connectSocket({
  2. url: 'test.php',
  3. data:{
  4. x: '',
  5. y: ''
  6. },
  7. header:{
  8. 'content-type': 'application/json'
  9. },
  10. method:"GET"
  11. })

wx.onSocketOpen(CALLBACK)


监听WebSocket连接打开事件。

示例代码:

  1. wx.connectSocket({
  2. url: 'test.php'
  3. })
  4. wx.onSocketOpen(function(res) {
  5. console.log('WebSocket连接已打开!')
  6. })

wx.onSocketError(CALLBACK)


监听WebSocket错误。

示例代码:

  1. wx.connectSocket({
  2. url: 'test.php'
  3. })
  4. wx.onSocketOpen(function(res){
  5. console.log('WebSocket连接已打开!')
  6. })
  7. wx.onSocketError(function(res){
  8. console.log('WebSocket连接打开失败,请检查!')
  9. })

wx.sendSocketMessage(OBJECT)


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

OBJECT参数说明:

参数类型必填说明
dataString/ArrayBuffer需要发送的内容
successFunction接口调用成功的回调函数
failFunction接口调用失败的回调函数
completeFunction接口调用结束的回调函数(调用成功、失败都会执行)

示例代码:

  1. var socketOpen = false
  2. var socketMsgQueue = []
  3. wx.connectSocket({
  4. url: 'test.php'
  5. })
  6. wx.onSocketOpen(function(res) {
  7. socketOpen = true
  8. for (var i = 0; i < socketMsgQueue.length; i++){
  9. sendSocketMessage(socketMsgQueue[i])
  10. }
  11. socketMsgQueue = []
  12. })
  13. function sendSocketMessage(msg) {
  14. if (socketOpen) {
  15. wx.sendSocketMessage({
  16. data:msg
  17. })
  18. } else {
  19. socketMsgQueue.push(msg)
  20. }
  21. }

wx.onSocketMessage(CALLBACK)


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

CALLBACK返回参数:

参数类型说明
dataString/ArrayBuffer服务器返回的消息

示例代码:

  1. wx.connectSocket({
  2. url: 'test.php'
  3. })
  4. wx.onSocketMessage(function(res) {
  5. console.log('收到服务器内容:' + res.data)
  6. })

wx.closeSocket()


关闭WebSocket连接。


wx.onSocketClose(CALLBACK)


监听WebSocket关闭。

  1. wx.connectSocket({
  2. url: 'test.php'
  3. })
  4. //注意这里有时序问题,
  5. //如果 wx.connectSocket 还没回调 wx.onSocketOpen,而先调用 wx.closeSocket,那么就做不到关闭 WebSocket 的目的。
  6. //必须在 WebSocket 打开期间调用 wx.closeSocket 才能关闭。
  7. wx.onSocketOpen(function() {
  8. wx.closeSocket()
  9. })
  10. wx.onSocketClose(function(res) {
  11. console.log('WebSocket 已关闭!')
  12. })

Bug & Tip

  1. tip: createSocket 链接默认和最大超时时间都是 60s
  2. tip: 网络请求的 referer 是不可以设置的,格式固定为 https://servicewechat.com/{appid}/{version}/page-frame.html,其中 {appid} 为小程序的 appid,{version} 为小程序的版本号,版本号为 0 表示为开发版。
转载本站内容时,请务必注明来自W3xue,违者必究。
 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号