6

微信小程序开发实战(23):WebSocket实战

 3 years ago
source link: https://blog.csdn.net/nokiaguy/article/details/108212194
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

微信小程序开发实战(23):WebSocket实战

WebSocket是一种在单个TCP 连接上进行全双工通讯的协议。 在WebSocket API 中,浏览器和服务器只需要完成一次握手,两者之间就直接可以建立持久性的连接,并进行双向数据传输。

HTML5支持WebSocket,使用方法和小程序的WebSocket基本是一样的。WebSocket API由若干个方法和若干个事件组成。这些方法和事件如下:

  • wx.connectSocket:与服务端建立连接

  • wx.sendSocketMessage:向服务端发送数据

  • wx.closeSocket:关闭连接

  • wx.onSocketOpen:成功与服务端建立连接后触发的事件

  • wx.onSocketError:与服务端建立连接失败后触发的事件

  • wx.onSocketMessage:服务端返回响应消息后触发的事件

  • wx.onSocketClose:成功关闭WebSocket连接后触发的事件

其中wx.connectSocket和wx.sendSocketMessage方法都有一个Object类型的参数,参数属性含义如下所示。

wx.connectSocket方法参数描述

  • url:String类型,必选,开发者服务器接口地址,必须是 wss 协议,且域名必须是后台配置的合法域名

  • data:Object类型,可选,请求的数据

  • header:Object类型,可选,HTTPS Header , header 中不能设置 Referer

  • method:       String类型,可选,默认是GET,有效值为: OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT

  • success:Function类型,可选,接口调用成功的回调函数

  • fail:Function 类型,可选,接口调用失败的回调函数

  • complete:Function类型,可选, 接口调用结束的回调函数(调用成功、失败都会执行)

wx. sendSocketMessage方法参数描述

  • data:String或ArrayBuffer类型,必选,需要发送的内容

  • success:Function类型,可选,接口调用成功的回调函数

  • fail:Function 类型,可选,接口调用失败的回调函数

  • complete:Function类型,可选, 接口调用结束的回调函数(调用成功、失败都会执行)

下面的代码是从建立WebSocket连接,到向服务端发送数据,然后接收到响应数据,最后关闭WebSocket连接的完整演示。

如果读者没有用于测试WebSocket的Url,可以使用HTML5来测试WebSocket,效果是一样的。例如,下面是一段用来测试WebSocket的完整的代码,使用的是ws://echo.websocket.org,一个专门用来测试WebSocket的echo服务。在小程序中,必须使用wss,而在HTML5中并没这个要求,使用wss和ws都可以,而且域名也不需要备案。

我们可以看到,HTML5的WebSocket和小程序的WebSocket的API在使用上基本是一样的。例如,小程序使用wx.connectSocket方法连接服务端,而HTML5直接创建了WebSocket对象。小程序使用wx.sendSocketMessage方法向服务端发送数据,而HTML5使用websocket.send方法向服务端发送数据。

在浏览器中运行这段代码后,会自动连接服务端,然后在页面左上角输入Hello,按回车键,在页面会显示发送和返回的响应信息。如图1所示。

图1  HTML5 WebSocket测试


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK