webSocket

来自于:开发者立即使用

addEventListener open send close getConnectState

论坛示例

为帮助用户更好更快的使用模块,论坛维护了一个示例,示例中包含示例代码供您参考。

概述

WebSocket简介

WebSocket用于在Web浏览器和服务器之间进行任意的双向数据传输的一种技术。WebSocket协议基于TCP协议实现,包含初始的握手过程,以及后续的多次数据帧双向传输过程。其目的是在WebSocket应用和WebSocket服务器进行频繁双向通信时,可以使服务器避免打开多个HTTP连接进行工作来节约资源,提高了工作效率和资源利用率。

webSocket 模块概述

本模块封装了的原生WebSocket通信,支持ws、wss协议。

使用此模块之前建议先配置config.xml文件,配置完毕,需通过云端编译生效,配置方法如下:

  • 名称:webSocket
  • 参数:isGlobal
  • 配置示例:
  1. <feature name="webSocket">
  2. <param name="isGlobal" value="true"/>
  3. </feature>
  • 字段描述:

isGlobal:(必须配置)模块对象是否全局变量控制,当设置true时整个app只生成一个对象,可以跨页面进行发送数据;当设置为fasle时每一个页面初始化一次就是一个对象,页面间的对象不能互相操作。

固件要求

Android:4.0及以上 iOS:8.0及以上

模块接口

addEventListener

websocket消息监听,可以监听连接,断开,接收消息等事件。

addEventListener(callback(ret, err))

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. status: true, //布尔型;true||false
  3. evenType : 'Connected', //字符串: 消息类型事件
  4. //Connected 连接成功
  5. //ReturnData 接收消息
  6. //Closed 连接断开
  7. data : '' //接收消息内容,仅evenType='ReturnData'有效
  8. }

err:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. code: 1,
  3. msg : ''
  4. }

示例代码

  1. var demo = api.require('webSocket');
  2. demo.addEventListener(function(ret, err) {
  3. alert(JSON.stringify(ret) + " " + JSON.stringify(err));
  4. });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

open

连接websocket

open({params}, callback(ret, err))

params

url:

  • 类型:字符串
  • 描述:(必填项)websocket的连接地址:如:ws://192.168.1.102:8887/socket。

pingInterval:

  • 类型:整型
  • 描述:(可选项)心跳间隔,单位秒,设置大于0时起效果。
  • 默认值:0

pingData:

  • 类型:字符串
  • 描述:(可选项)心跳数据,配合pingInterval 使用。
  • 默认值:ping

isBtyes:

  • 类型:布尔型
  • 描述:(可选项)是否用流的方式发送数据。
  • 默认值:false(字符串)

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. status: true //布尔型;true||false
  3. }

err:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. code: 1 ,
  3. msg : ''
  4. }

示例代码

  1. var demo = api.require('webSocket');
  2. demo.open({
  3. url : 'ws://192.168.1.102:8887/socket'
  4. }, function(ret, err) {
  5. alert(JSON.stringify(ret) + " " + JSON.stringify(err));
  6. });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

send

发送内容

send({params}, callback(ret, err))

params

data:

  • 类型:字符串
  • 描述:(必填项)发送的消息内容。

isBtyes:

  • 类型:布尔型
  • 描述:(可选项)是否用流的方式发送数据。
  • 默认值:false(字符串)

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. status: true //布尔型;true||false
  3. }

err:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. code: 1,
  3. msg : ''
  4. }

示例代码

  1. var demo = api.require('webSocket');
  2. demo.send({
  3. data : '我是消息内容'
  4. }, function(ret, err) {
  5. alert(JSON.stringify(ret) + " " + JSON.stringify(err));
  6. });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

close

关闭连接

close(callback(ret, err))

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. status: true //布尔型;true||false
  3. }

err:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. code: 1,
  3. msg : ''
  4. }

示例代码

  1. var demo = api.require('webSocket');
  2. demo.close(unction(ret, err) {
  3. alert(JSON.stringify(ret) + " " + JSON.stringify(err));
  4. });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

getConnectState

获取连接状态

getConnectState()

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. status: true, //布尔型;true
  3. State :'NOT_YET_CONNECTED'//连接状态:
  4. //NOT_YET_CONNECTED 还没有连接
  5. //OPEN 打开状态
  6. //CLOSING 正在关闭
  7. //CLOSED 已关闭
  8. //CONNECTING 正在连接(仅iOS有值)
  9. }

示例代码

  1. var demo = api.require('webSocket');
  2. var ret = demo.getConnectState();
  3. alert(JSON.stringify(ret));

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本