Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在Flutter中拥有与服务器发送事件/ EventSource功能类似的功能?

如何在Flutter中拥有与服务器发送事件/ EventSource功能类似的功能?
EN

Stack Overflow用户
提问于 2021-02-23 10:45:04
回答 1查看 423关注 0票数 2

我有一个网络开发人员的背景,只是一个初学者在扑翼和飞镖。

对于一个项目,我需要在Flutter中实现Server-Sent-Event / EventSource功能。

我已经搜索过像dart:http、EventSource构造函数和Flutter API这样的选项,但我还没有找到使用StreamBuilder的工作示例。

你能给我举一些Flutter应用程序可以监听API的例子吗?

这就是Web开发中要做的事情。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// client side

const eventSource = new EventSource(`/eventSource/${xyz}`)
eventSource.onmessage = function(e) {
    const data = JSON.parse(e.data)
    console.log(e)
}

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// server side

router.get('/eventSource/:id', (req, res) => {
    const headers = {
        'Content-Type': 'text/event-stream',
        'Connection': 'keep-alive',
        'Cache-Control': 'no-cache'
    }
    res.writeHead(200, headers)  
    const data = `data: ${JSON.stringify(someData)}\n\n`
    setInterval(() => {
        x.write(data)
    }, 3000)
    req.on('close', () => {})
})

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-25 06:24:28

这段代码可能会有帮助

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var _client;
var _streamResponse;

Future streamFiles() async {
  _client = http.Client();
  final url = 'url';
  var headers = {};

  final req = http.Request('GET', Uri.parse(url));
  req.headers.addAll(headers);
  final res = await _client.send(req);

  _streamResponse = res.stream.toStringStream().listen((value) {
    print(json.decode(value));
  });
}

@override
void dispose() {
  if (_streamResponse != null) _streamResponse.cancel();
  if (_client != null) _client.close();
  super.dispose();
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66331623

复制
相关文章

相似问题

添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文