在feathersjs文档中,例如在这里,调用服务器的推荐方法是发出一个事件。为什么不直接进行应用调用?那么为什么要使用:
socket.emit('find', 'messages', { status: 'read', user: 10 }, (error, data) => {
console.log('Found all messages', data);
});
当您可以简单地执行以下操作时:
app.service('messages').find({ query: { status: 'read', user: 10 } })
这只是人们更喜欢事件符号还是还有其他论点需要考虑?
您链接的文档页面解释了如何直接使用 websocket - 例如,如果您使用 Android 应用程序连接或不想/不能在客户端上使用 Feathers。
建议尽可能在客户端上使用羽毛,它会在引擎盖下自动为您执行完全相同的操作。客户端代码如下所示:
const io = require('socket.io-client');
const feathers = require('@feathersjs/feathers');
const socketio = require('@feathersjs/socketio-client');
const socket = io('http://api.my-feathers-server.com');
const app = feathers().configure(socketio(socket));
app.service('messages').find({ query: { status: 'read', user: 10 } })
.then(data => console.log('Found all messages', data));
做与完全相同的事情
const io = require('socket.io-client');
const socket = io('http://api.my-feathers-server.com');
socket.emit('find', 'messages', { status: 'read', user: 10 }, (error, data) => {
console.log('Found all messages', data);
});
但是有了第一个,你会得到Feathers应用程序的优点(钩子,事件,承诺,身份验证(和熟悉度。