开发者社区
社区提问意见反馈
开发者钉组织
扫描二维码
加入支付宝开发者钉组织
基础 api
基础
应用级事件
界面
跳转
多媒体
缓存
文件
位置
网络
发起请求
上传
下载
websocket
sockettask
设备
worker
数据安全
分享
收藏
自定义通用菜单
更新管理
web-view组件控制
升级支付宝最新版本
隐私信息授权
小程序广告
开放能力 api
开发 > api > 基础 api > 网络 > websocket > my.connectsocket
评论 (3)
收藏
我的文档
设置

sockettask my.connectsocket(object object)

支小宝客户端 支持

安诊儿客户端 支持

主体: 企业支付宝小程序个人支付宝小程序

相关文档: 网络 api 使用须知

创建 websocket 的连接。

object object

查看示例

属性 类型 默认值 必填 兼容性 描述
url string - -

开发者服务器 wss 接口地址。
注意:请尽量不要在 url 参数中传空格。若业务需要,链接中一定要包含空格,请务必把空格进行转义,否则 api 会报错

data object - -

请求的参数。会将数据转换成 querystring 形式拼在 url 上

header object -
ide: 3.8.2

请求头

multiple boolean -
基础库: 1.0/2.3.1

是否多实例。传入 true 时,api 返回 sockettask 实例。
注意: 基础库 2.9.1 以下,multiple 的默认值为 false;2.9.1 及以上,multiple 的默认值会优先使用 app.json 中 behavior 下的 connectsocketdefaultmultiple 字段,ide 中默认小程序模版内 connectsocketdefaultmultiple 为 true

protocols array -
基础库: 1.0/2.3.1

子协议数组。会设置请求头的 sec-websocket-protocol

timeout number 30000
支付宝: 10.3.30
ide: 3.8.4

超时时间,单位 ms。
注意:ios 的时间上限为 75s 左右,安卓为 120s 左右

success function - -

调用成功的回调函数

fail function - -

调用失败的回调函数

complete function - -

调用结束的回调函数(调用成功、失败都会执行)

sockettask

websocket 任务。 my.connectsocket 创建多实例(multiple = true)的 websocket 时会返回。

fail 回调的参数为 object,error 属性为错误码,errormessage 属性为错误消息。

错误码 错误消息 凯发app官方网站的解决方案
2 接口参数无效。

请检查 url 是否合法。

3 该 appid,sockettaskid 对应的 websocket 已存在。

单实例(multiple = false)的 websocket 只能创建一次,多次创建会报此错。可先执行 my.closesocket 关闭当前 websocket,再进行下一次的创建。

4 无法识别的 url 格式。

替换 url 链接。

5 url 必须以 ws 或者 wss 开头。

替换 url 链接。

20 请求 url 不支持 ws,请使用 wss。

请使用 wss 协议的 url。

单实例
多实例
my.connectsocket({
  url: 'wss://hbhftgf.site/ws/', // 此 url 仅为示例,开发者可替换自己的 url
  success: (res) => {
    console.log("创建socket连接成功"  json.stringify(res));
  },
  fail: (error) => {
    console.error('创建连接失败: ', json.stringify(error));
  },
});
my.onsocketopen(function(res) {
  my.alert({ content: 'onsocketopen'  json.stringify(res) });
});
my.onsocketerror(function(res) {
  my.alert({ content: 'onsocketerror'  json.stringify(res) });
});
my.onsocketclose(function(res) {
  my.alert({ content: 'onsocketclose'  json.stringify(res) });
});
const sockettask =  my.connectsocket({
  url: 'wss://hbhftgf.site/ws/', // 此 url 仅为示例,开发者可替换自己的 url
  multiple: true, // multiple 为 true 则会返回 sockettask
  success: (res) => {
    console.log("connectsocket1 成功"  json.stringify(res));
  },
  fail: (res) => {
    console.log("connectsocket1 失败"  json.stringify(res));
  },
});
sockettask.onopen(function(res) {
  console.log("sockettask1.onopen"  json.stringify(res));
});
sockettask.onclose(function(res) {
  console.log("sockettask1.onclose"  json.stringify(res));
});
sockettask.onerror(function(res) {
  console.log("sockettask1.onerror"  json.stringify(res));
});
sockettask.onmessage(function(res) {
  console.log("sockettask1.onmessage"  json.stringify(res));
});
  • tip
    当创建单实例(multiple = false)的 websocket 时, my.onsocketopen 等接口才会生效,多实例不生效。
  • tip
    多实例(multiple = true)的 websocket 才会返回 sockettask,单实例不会返回。
  • tip
    多实例最多能创建 5 条 websocket 通道。
  • tip
    如需使用 http 的 basic auth,请按标准构造 authorize 请求头作为入参 header 字段传入,而不要将用户名和密码放进 url(即不要使用 wss://{username}:{password}@example.com 这样的 url),否则会有兼容性问题(android 上不支持,ios 未来也会取消支持)。
  • bug
    ios 上此接口会在 url 中不包含用户名和密码的情况下也构造出 authorize 字段放到请求头里。这可能会导致部分服务器报错或拒绝连接。如果遇到 android 能够连接而 ios 不能的情况,可尝试向 header 中显式传入 authorize: '' 来规避这个问题
  • bug
    安卓端 10.5.6 以前,当页面调用 my.relaunch、my.redirectto 或 my.switchtab 后,onsocketmessage 事件会失效。此缺陷已在 10.5.6 版本解决

q:my.connectsocket 是否支持 mqtt 协议

a:

my.connectsocket 支持 mqtt 协议,但是需要注意的是,若为 mqtt 协议,则需要注意在 header 参数里,加上 「 sec-websocket-protocol : 'mqtt' 」
参考代码:

my.connectsocket({
  url: 'wss://hbhftgf.site/ws/', // 此 url 仅为示例,开发者可替换为自己的 url
  //mqtt 协议服务需要加上这个header
  header : {
   "sec-websocket-protocol" : "mqtt"
   },
  success: (res) => {
    console.log("创建 socket 连接成功"   json.stringify(res));
  },
  fail: (error) => {
    my.alert({ content: '创建连接失败:'   json.stringify(error) });
  },
});
内容没有解决您的问题?您还可以前往 或 寻求帮助
凯发k8官方网娱乐官方 copyright © 2022 支付宝(杭州)信息技术有限公司  | icp证浙b2-20160559
该文档对你是否有帮助?
当前页面目录
网站地图