用Socket.io监听事件的FeathersJS是沉默的

我感觉自己如此接近这个工作,但我错过了最后一步。 它看起来像我正在按照文档,但有人可以帮助我了解我错过了什么。 这是我的@angular服务:

declare var require: any const feathers = require('feathers/client'); const socketio = require('feathers-socketio/client'); const io = require('socket.io-client'); import { Injectable } from '@angular/core'; import { UserService } from './user.service'; @Injectable() export class FeathersService { socket = io.connect('http://localhost:3000/'); app = feathers().configure(socketio(this.socket)); status = this.app.service('realtime/user_status'); constructor( public user: UserService, ) { this.status.on('updated', ({status}) => { console.log('your status was updated', status); this.user.me.status = status; }); } updateStatus(status) { const id = this.user.me._id; this.status.update(id, {status}); } } 

那么这里是我的路由器代码(子路线:/实时)

 const feathers = require('feathers'); const realtime = feathers(); const socketio = require('feathers-socketio'); realtime.configure(socketio({ wsEngine: 'uws' }, (io) => { io.on('connection', (socket) => { socket.emit('news', { text: 'A client connected!' }); }); // Registering Socket.io middleware io.use((socket, next) => { // Exposing a request property to services and hooks socket.feathers.referrer = socket.request.referrer; next(); }); })); const UserService = require('../controllers/user_service'); realtime.use('/user_status', new UserService()); module.exports = realtime; 

最后这里是我的服务

 const User = require('../models/user'); class UserService { update(id, userProps, params, next) { const userID = id; User.findByIdAndUpdate({ _id: userID }, userProps, { 'new': true }) .then(user => { console.log('userProps', userProps); console.log('user >>>', user); return Promise.resolve(user); }) .catch(next); } } module.exports = UserService; 

你没有在你的服务方法中返回承诺

 const User = require('../models/user'); class UserService { update(id, userProps, params) { const userID = id; return User.findByIdAndUpdate({ _id: userID }, userProps, { 'new': true }) .then(user => { console.log('userProps', userProps); console.log('user >>>', user); return user; }); } } module.exports = UserService; 

应该这样做。