如何将 feathersjs 客户端用于 websocket 和 restful 连接?
How to use feathersjs client for both websocket and restful connection?
我已经在我的 feathersjs 服务器上配置了 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 ? feathersjs 中定义的服务方法对于 websocket 和 restful 是相同的。我怎样才能进行特定的 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的说明,我知道如何分别请求rest或websocket连接。我不知道如何将它们合并到一个客户端。
你不应该这样做。 Feathers 完全通过 REST 或 Websockets 工作,没有必要在同一个应用程序中同时使用两者。通常我们建议尽可能使用 Websocket 连接,因为一旦建立连接,您还会收到 real-time 事件和请求更快。
客户端上的连接配置真正做的是初始化一个标准服务,该服务在调用 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'
}));
我已经在我的 feathersjs 服务器上配置了 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 ? feathersjs 中定义的服务方法对于 websocket 和 restful 是相同的。我怎样才能进行特定的 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的说明,我知道如何分别请求rest或websocket连接。我不知道如何将它们合并到一个客户端。
你不应该这样做。 Feathers 完全通过 REST 或 Websockets 工作,没有必要在同一个应用程序中同时使用两者。通常我们建议尽可能使用 Websocket 连接,因为一旦建立连接,您还会收到 real-time 事件和请求更快。
客户端上的连接配置真正做的是初始化一个标准服务,该服务在调用 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'
}));