📑往期推文全新看点(文中附带最新·鸿蒙全栈学习笔记)
✒️ 鸿蒙应用开发与鸿蒙系统开发哪个更有前景?
✒️ 嵌入式开发适不适合做鸿蒙南向开发?看完这篇你就了解了~
✒️ 对于大前端开发来说,转鸿蒙开发究竟是福还是祸?
✒️ 鸿蒙岗位需求突增!移动端、PC端、IoT到底该怎么选?
✒️ 记录一场鸿蒙开发岗位面试经历~
✒️ 持续更新中……
简介
eventsource三方库是EventSource客户端的纯JavaScript实现。它提供了一种在客户端与服务器之间建立单向持续连接的机制,服务器可以使用这个连接向客户端发送事件更新,而客户端能够实时接收并处理这些更新。
下载安装
ohpm install @ohos/eventsource
使用说明
1、引入依赖
import EventSource from '@ohos/eventsource';
2、在module.json5中添加权限
"requestPermissions": [
{
"name": "ohos.permission.INTERNET"
}
]
需要SSE服务器配合使用
服务端示例代码
创建一个可以传输事件流数据的node服务器,具体请看 server目录
const express = require('express');
const serveStatic = require('serve-static');
const SseStream = require('ssestream');
const app = express()
app.use(serveStatic(__dirname));
app.get('/sse', (req, res) => {
console.log('new connection');
const sseStream = new SseStream(req);
sseStream.pipe(res);
const pusher = setInterval(() => {
sseStream.write({
event: 'server-time',
data: new Date().toTimeString()
})
}, 1000)
res.on('close', () => {
console.log('lost connection');
clearInterval(pusher);
sseStream.unpipe(res);
})
})
app.listen(8080, (err) => {
if (err) throw err;
console.log('server ready on http://localhost:8080');
})
客户端端示例代码
import promptAction from '@ohos.promptAction';
import EventSource from '@ohos/eventsource'
@State es: null | Eventsource = null;
@State url:string = "http://localhost:8080/sse";
eventListener = (e: Record<"data", string>) => {
this.simpleList.push(e.data);
}
// 创建连接
this.es = new EventSource(this.url)
// 开启监听
this.es.addEventListener("server-time", this.eventListener);
// 取消监听
this.es.removeEventListener("server-time", this.eventListener);
// 断开连接
this.es.close();
// 错误监听
this.es.onFailure((e: Record<"message", string>) => {
// 得到错误消息,对错误消息做处理
})
错误监听需在创建连接开启的时候同步开启
接口说明
接口列表
名称 | 参数类型 | 说明 |
---|---|---|
addEventListener | (type:string,callback:()=>{}) | 添加监听事件,当事件被触发的时候做出处理 |
removeEventListener | (type:string,callback:()=>{}) | 移除监听事件 |
close | 无传参 | 断开连接 |
onFailure | ((e:object)=>{}) | e为错误对象,捕获错误 |
单元测试用例详见 TEST.md
约束与限制
- DevEco Studio版本: 4.1.3.500, SDK: API11 Release(4.1.0)
目录结构
|---- eventsource
| |---- entry # 示例代码文件夹
|---- library # eventsource库文件
|---- src
| |---- main
| |---- ets
| |---- eventsource.js #eventsource
| |---- README.md # 安装使用方法
| |---- README_zh.md # 安装使用方法