Uknow | 优维低代码:WebSocket 消息推送

时间:2022-11-01 19:01:05

Uknow | 优维低代码:WebSocket 消息推送

Uknow | 优维低代码:WebSocket 消息推送

优维低代码技术专栏,是一个全新的、技术为主的专栏,由优维技术委员会成员执笔,基于优维7年低代码技术研发及运维成果,主要介绍低代码相关的技术原理及架构逻辑,目的是给广大运维人提供一个技术交流与学习的平台。


连载第二十六期

《高级指引:WebSocket 消息推送

WebSocket 是一种网络传输协议,可在单个 TCP 连接上进行全双工通信,位于 OSI 模型的应用层。

WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在 WebSocket API 中,浏览器和服务器只需要完成一次握手,两者之间就可以创建持久性的连接,并进行双向数据传输。

其事件如下:

  • message.subscribe
  • message.unsubscribe

# 内建处理器:message.*

Uknow | 优维低代码:WebSocket 消息推送

# 在 lifeCycle 中使用

构件在自身渲染和页面渲染的各个时刻可以执行WebSocket消息推送的相关订阅动作,它们通过 lifeCycle 定义。

brick: your.any-brick
lifeCycle:
onPageload:
- action: message.subscribe
args:
- pipelineChannel
- system: pipeline
topic: "pipeline.task.running.${QUERY.taskId}"
callback:
success:
action: console.log
error:
action: console.log
onMessage:
- channel: pipelineChannel
handlers:
- target: your-brick
transform:
dataSource: <% EVENT.detail %>
onPageLeave:
- action: message.unsubscribe
args:
- pipelineChannel
- system: pipeline
topic: "pipeline.task.running.${QUERY.taskId}"
callback:
success:
action: console.log
error:
action: console.log

# 在事件中使用

brick: your.any-brick
events:
something.happen:
action: message.subscribe
args:
- pipelineChannel
- system: pipeline
topic: "pipeline.task.running.${EVENT.detail.id}"
callback:
success:
action: console.log
error:
action: console.log

# 接口定义

interface PluginWebSocketMessageTopic {
source?: string;
// 产品模块
system: string;
// 订阅topic
topic: string;
}