0

我的 HTML 页面中有以下代码

    Gun.on('opt', function (ctx) {
        if (ctx.once) {
            return
        }
        this.to.next(ctx)
        window.auth = ctx.opt.auth
        ctx.on('get', function (msg) {
            msg.auth = window.auth
            this.to.next(msg)
        })
        ctx.on('put', function (msg) {
            msg.put.auth = window.auth
            this.to.next(msg)
        })
    })

    var gun = Gun({
        peers: ['http://localhost:8765/gun'],
        auth: {
            user: 'mroon',
            password: 'titi'
        }
    })

在服务器上,我只是观察请求

Gun.on('create', function(db) {
    console.log('gun created')
    this.to.next(db);

    db.on('get', function(request) {
        // this request contains the auth attribute from the client
        this.to.next(request);
    });
    db.on('put', function(request) {
        // this request does not contain the auth attribute from the client
        this.to.next(request);
    });
});

每次我使用gun.get('someAttribute')服务器上的请求查询图形时都包含该auth属性。

但是当gun.get('someAttribute').put({attribute: 'my new value'})调用 a 时,服务器上的请求不包含该auth属性。

如何将auth属性添加到put请求中,以使所有对等方也能获得它?

4

1 回答 1

0

@micha-roon 你直接跳到 GUN 的核心/内部电线细节,这不是最容易开始的事情,但这是我做的事情,我猜这就是你要找的:

(如果没有,请发表评论,我会更新)

它的作用是为 GUN 中的所有出站消息添加一个 DEBUG 标志,您可以更改它以添加其他元数据或信息

Gun.on('opt', function(root){
  if(!root.once){
    root.on('out', function(msg){
      msg.DBG = msg.DBG || +new Date;
      this.to.next(msg);
    });
  }
  this.to.next(root);
})

另一个很好的参考:https ://github.com/zrrrzzt/bullet-catcher

于 2020-03-24T16:38:09.823 回答