如何使用feathersjs客户端进行websocket和restful连接?

时间:2017-02-01 05:31:21

标签: feathersjs

我在featherjs服务器上配置了primus和restful服务。以下是配置代码。

app
  .use(compress())
  .options('*', cors())
  .use(cors())
  .use('/', serveStatic(app.get('public')))
  .use(bodyParser.json())
  .use(bodyParser.urlencoded({extended: true}))
  .configure(hooks())
  .configure(rest())
  .configure(swagger({
    docsPath: '/docs',
    uiIndex: path.join(__dirname, '../public/docs.html'),
    info: {
      title: process.env.npm_package_fullName,
      description: process.env.npm_package_description
    }
  }))
  .configure(primus({
    transformer: 'websockets',
    timeout: false
  }, (primus) => {
    primus.library();
    primus.save(path.join(__dirname, '../public/dist/primus.js'));
  }))

在客户端,下面是使用Primus作为连接方法的代码,在这种情况下是websocket。在这种情况下,如何在客户端使用restful? featherjs中定义的服务方法对于websocket和restful是相同的。如何进行特定的休息呼叫而不是websocket?

const feathers = require('feathers-client');
const rest = require('feathers-rest/client');
const Primus = require('../public/dist/primus.js');
let primus = new Primus('http://localhost:3030');
let app = feathers()
  .configure(feathers.hooks())
  .configure(feathers.primus(primus));

我已阅读https://docs.feathersjs.com/clients/rest.html的说明,我知道如何分别请求休息或websocket连接。我不知道如何将它们组合成一个客户端。

1 个答案:

答案 0 :(得分:3)

你不应该这样做。 Feathers完全通过REST Websockets工作,不需要在同一个应用程序中同时使用它们。通常我们建议尽可能使用Websocket连接,因为一旦建立连接,您也将获得实时事件和请求更快。

客户端上的连接配置实际上是在调用app.service('anything')时初始化使用连接与远程服务通信的标准服务。如果绝对必要,您可以import and instantiate one of the REST clients将其作为服务在您的应用上手动注册:

const SuperAgentClient = require('feathers-rest/lib/client/superagent');
const superagent = require('superagent');

app.use('/myservice', new SuperAgentClient({
  name: 'servicename',
  connection: superagent,
  base: 'http://my-server.com'
}));