Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
DCloud
unidocs-unicloud-zh
提交
ad95a17d
U
unidocs-unicloud-zh
项目概览
DCloud
/
unidocs-unicloud-zh
通知
90
Star
2
Fork
21
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
2
列表
看板
标记
里程碑
合并请求
9
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
unidocs-unicloud-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
2
Issue
2
列表
看板
标记
里程碑
合并请求
9
合并请求
9
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
ad95a17d
编写于
6月 21, 2024
作者:
crlfe
😲
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add unicloud websocket.md
上级
c0932457
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
308 addition
and
0 deletion
+308
-0
docs/websocket.md
docs/websocket.md
+308
-0
未找到文件。
docs/websocket.md
0 → 100644
浏览文件 @
ad95a17d
# WebSocket
> 仅支付宝云支持
很多情况下需要实时进行网络互动,例如游戏、通信、金融交易和其他高吞吐量活动。
WebSocket 是一种协议,可通过单个 TCP 连接在网络客户端与网络服务器之间提供全双工通信通道。WebSocket 协议使用 HTTP 协议在客户端与服务器之间建立连。
## WebSocket 事件
>
> WebSocket 支持在云函数与云对象中使用。
### connection
>
> 当有客户端进行连接时触发
**云函数实现**
```
javascript
exports
.
onWebsocketConnection
=
function
(
event
,
context
)
{
console
.
log
(
"
onWebsocketConnection
"
,
event
,
context
)
}
```
**云对象实现**
```
javascript
module
.
exports
=
{
_onWebsocketConnection
:
function
(
event
)
{
console
.
log
(
"
onWebsocketConnection
"
,
event
)
}
}
```
**入参参数**
event
|参数|类型|说明|
|---|---|---|
|connectionId|
`String`
|连接ID|
|query|
`Object`
|请求时的query参数|
context
云函数 context
[
参考
](
https://doc.dcloud.net.cn/uniCloud/cf-callfunction.html#context
)
### message
>
> 接收到客户端消息时触发
**云函数实现**
```
javascript
exports
.
onWebsocketMessage
=
function
(
event
,
context
)
{
console
.
log
(
"
onWebsocketMessage
"
,
event
,
context
)
}
```
**云对象实现**
```
javascript
module
.
exports
=
{
_onWebsocketMessage
:
function
(
event
)
{
console
.
log
(
"
onWebsocketMessage
"
,
event
)
}
}
```
**入参参数**
**event**
|参数|类型|说明|
|---|---|---|
|connectionId|
`String`
|连接ID|
|payload|
`String`
`Buffer`
|消息内容|
**context**
云函数 context
[
参考
](
https://doc.dcloud.net.cn/uniCloud/cf-callfunction.html#context
)
### disConnection
>
> 连接断开时触发
**云函数实现**
```
javascript
exports
.
onWebsocketDisConnection
=
function
(
event
,
context
)
{
console
.
log
(
"
onWebsocketDisConnection
"
,
event
,
context
)
}
```
**云对象实现**
```
javascript
module
.
exports
=
{
_onWebsocketDisConnection
:
function
(
event
)
{
console
.
log
(
"
onWebsocketDisConnection
"
,
event
)
}
}
```
**入参参数**
**event**
|参数|类型|说明|
|---|---|---|
|connectionId|
`String`
|连接ID|
**context**
云函数 context
[
参考
](
https://doc.dcloud.net.cn/uniCloud/cf-callfunction.html#context
)
### error
>
> 触发其他事件时失败后触发
**云函数实现**
```
javascript
exports
.
onWebsocketError
=
function
(
event
,
context
)
{
console
.
log
(
"
onWebsocketError
"
,
event
,
context
)
}
```
**云对象实现**
```
javascript
module
.
exports
=
{
_onWebsocketError
:
function
(
event
)
{
console
.
log
(
"
onWebsocketError
"
,
event
)
}
}
```
**入参参数**
**event**
|参数|类型|说明|
|---|---|---|
|connectionId|
`String`
|连接ID|
|errorMessage|
`String`
|错误信息|
**context**
云函数 context
[
参考
](
https://doc.dcloud.net.cn/uniCloud/cf-callfunction.html#context
)
## 云函数 uniCloud API
### uniCloud.ws.send
>
> 从云函数/云对象中像客户端发送消息
```
javascript
await
uniCloud
.
ws
.
send
(
connectionId
,
sendData
)
```
**参数说明**
|参数|类型|说明|
|---|---|---|
|connectionId|
`String`
`Array`
|客户端连接ID, 支持批量向客户端发送消息|
|sendData|
`String`
`Object`
`Buffer`
|发送给客户端的消息内容|
**示例**
```
javascript
// 以云函数为例
exports
.
onWebsocketMessage
=
async
function
(
event
)
{
const
{
connectionId
,
payload
}
=
event
// 发送给单个客户端
await
uniCloud
.
ws
.
send
(
connectionId
,
`receive:
${
payload
}
`
)
// 发送给多个客户端
await
uniCloud
.
ws
.
send
([
connectionId1
,
connectionId2
,
...],
`receive:
${
payload
}
`
)
// 发送给客户端对象数据
await
uniCloud
.
ws
.
send
(
connectionId
,
{
receive
:
payload
})
// 发送给客户端二进制数据
await
uniCloud
.
ws
.
send
(
connectionId
,
Buffer
.
from
(
`receive:
${
payload
}
`
))
}
```
### uniCloud.ws.close
>
> 在云函数/云对象中关闭连接
```
javascript
await
uniCloud
.
ws
.
close
(
connectionId
)
```
**参数说明**
|参数|类型|说明|
|---|---|---|
|connectionId|
`String`
`Array`
|客户端连接ID, 支持批量关闭客户端连接|
**示例**
```
javascript
// 以云函数为例
exports
.
onWebsocketMessage
=
async
function
(
event
)
{
const
{
connectionId
,
payload
}
=
event
// 关闭单个客户端连接
await
uniCloud
.
ws
.
close
(
connectionId
)
// 批量关闭客户端连接
await
uniCloud
.
ws
.
close
([
connectionId1
,
connectionId2
,
...])
}
```
### uniCloud.ws.signedURL
>
> 在云函数/云对象中生成WebSocket连接地址
在客户端没有使用 uniCloud SDK 时,可以通过 URL 化在云端生成 WebSocket 连接地址。
```
javascript
await
uniCloud
.
ws
.
signedURL
(
name
,
query
)
```
**参数说明**
|参数|类型|说明|
|---|---|---|
|name|
`String`
|WebSocket云函数/云对象名称|
|query|
`Object`
|建立连接时需要传递的参数, 仅在
`connection`
事件中接收到|
**返回值**
WebSocket 连接地址
**示例**
```
javascript
await
uniCloud
.
ws
.
signedURL
(
"
exampleWebSocket
"
,
{
key
:
"
val
"
})
```
## 客户端 uniCloud API
### uniCloud.connectWebSocket
快速连接 WebSocket 服务
```
javascript
uniCloud
.
connectWebSocket
({
name
:
"
exampleWebSocket
"
,
query
:
{}
})
```
**参数说明**
|参数|类型|说明|
|---|---|---|
|name|
`String`
|WebSocket云函数/云对象名称|
|query|
`Object`
|建立连接时需要传递的参数, 仅在
`connection`
事件中接收到|
**返回值**
[
SocketTask
](
https://uniapp.dcloud.net.cn/api/request/socket-task.html
)
**示例**
```
javascript
const
exampleWebSocket
=
uniCloud
.
connectWebSocket
({
name
:
"
exampleWebSocket
"
,
query
:
{
key
:
"
val
"
}
})
// 连接成功时触发
exampleWebSocket
.
onOpen
(
event
=>
{
console
.
log
(
"
WebSocket:open
"
,
event
)
})
// 收到数据时触发
exampleWebSocket
.
onMessage
(
event
=>
{
console
.
log
(
"
WebSocket:message
"
,
event
.
data
)
})
// 连接被关闭时触发
exampleWebSocket
.
onClose
(
event
)
=>
{
console
.
log
(
"
WebSocket:close
"
,
event
)
})
// 连接因错误而关闭时触发
exampleWebSocket
.
onError
(
event
=>
{
console
.
log
(
"
WebSocket:error
"
,
event
)
})
```
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录