我在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连接。我不知道如何将它们组合成一个客户端。
答案 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'
}));