cloudevents 学习一 js sdk 试用

server

  • package.json
{
  "name": "node",
  "version": "1.0.0",
  "main": "index.js",
  "license": "MIT",
  "dependencies": {
    "axios": "^0.21.1",
    "body-parser": "^1.19.0",
    "cloudevents": "^4.0.3",
    "express": "^4.17.1"
  }
}
  • app.js
const app = require("express")();
const { HTTP ,CloudEvent} = require("cloudevents");
const bodyParser = require("body-parser");
app.use(bodyParser.urlencoded({ extended: false }))
app.use(bodyParser.json({ limit: '50mb' }));
app.post("/", (req, res) => {
  try {
    const event = HTTP.toEvent({ headers: req.headers, body: req.body });
    // respond as an event
    const responseEventMessage = new CloudEvent({
      source: '/',
      type: 'event:response',
      ...event
    });
    responseEventMessage.data = {
      hello: 'world'
    };
    console.log(event.toString())
    res.status(201).json(responseEventMessage);
  } catch (err) {
    console.error(err);
    res.status(415).header("Content-Type", "application/json").send(JSON.stringify(err));
  }
});
 
app.listen(3000, () => {
    console.log(`Example app listening at http://localhost:${3000}`)
  })

client

client.js

const axios = require("axios").default;
const { emitterFor, Mode, HTTP,CloudEvent } = require("cloudevents");
 
const type = "userlogin"
const source = "itmd_cust"
const subject = "demo"
const datacontenttype = "application/json"
const data  = {
    name:"dalongdemo",
    age:333
}
const ce = new CloudEvent({ type, source, data:data ,datacontenttype,subject });
const message = HTTP.binary(ce); // Or HTTP.structured(ce)
console.log(message.headers)
function sendWithAxios(message) {
    // Do what you need with the message headers
    // and body in this function, then send the
    // event
    axios({
        method: "post",
        url: "http://localhost:3000",
        data: message.body,
        headers: message.headers,
      });
 
  }
const emit = emitterFor(sendWithAxios, { mode: Mode.BINARY });
emit(ce);

效果

  • 运行
node app.js
node client.js
 

 

 

参考资料

https://cloudevents.github.io/sdk-javascript/

posted on   荣锋亮  阅读(166)  评论(0编辑  收藏  举报

编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
历史上的今天:
2020-08-04 openresty ngx.location.capture http2 问题
2016-08-04 node-webkit 应用打包发布
2016-08-04 nedb nodejs 数据库学习

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示