0

有谁有 seneca 的经验?

当我尝试包含网格时遇到问题...

这是hapi路线:

server.route({
        method: 'GET',
        path: '/api/ping',
        handler: function (req, reply) {

            server.seneca// load the mesh plugin
                .use('mesh')

                // send a message out into the network
                // the network will know where to send format:hex messages
                .act('foo:1,v:2', (err: any, out: any) => {
                    console.log(err)
                    // prints #FF0000
                    reply(null, out)
                })

        }
    })

这是我的服务:

require('seneca')({
})
  //.use('zipkin-tracer', {sampling:1})
  .use('entity')
  .use('ping-logic')

  .ready(function(){
    console.log(this.id)
  })

逻辑:

module.exports = function post(options) {
  var seneca = this

  seneca// provide an action for the format:hex pattern
  .add( 'foo:1', function (msg, done) {
    done( null, {x:1,v:100+msg.v} )
  })
  .use('mesh', { auto:true, pin:'foo:1' })
}

我收到错误

CL 缺失 { foo: 1, v: 2 }

有谁知道什么是问题?

4

1 回答 1

2

我也碰到过这个。我必须做两件事:

  1. 使用 seneca-mesh 插件的 master 分支。不幸的是,在 NPM 上发布的 v0.10.0 已经过时(2017 年 3 月 7 日),并且不适用于 seneca v3.4.x
  2. 在你的 hapi 路由中添加 seneca.ready(function ()) ,如下所示:

    server.route({
        method: 'GET',
        path: '/api/ping',
        handler: function (req, reply) {
    
        server.seneca// load the mesh plugin
            .use('mesh')
            .ready(function () {         
                // send a message out into the network
                // the network will know where to send format:hex messages
                this.act('foo:1,v:2', (err: any, out: any) => {
                    console.log(err)
                    // prints #FF0000
                    reply(null, out)
                })
            })             
        }
    })
    

还要检查这个相关的 github 问题,其中我询问主要贡献者是否有计划很快在 NPM 上发布新的固定版本: https ://github.com/senecajs/seneca-mesh/issues/90

希望这可以帮助

于 2017-08-07T14:00:21.730 回答