2017-03-04 8 views
2

私はこれがうまくいくと感じていますが、最後のステップがありません。私はドキュメントに正確に従っているようですが、誰かが私が逃しているものを理解するのを助けることができます。イベントを聴いているSocket.ioのFeathersJSは黙っています

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; 

答えて

2

であるあなたはそうではありません。

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}); 
    } 
} 

は、ここに私のルータコード(/リアルタイムサブルート)は、次のとおりです。ここに私の@angularサービスですあなたのサービス方法で約束を返す

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; 

それを行う必要があります。

+0

ありがとうございます!私は実際にこれを考え出したばかりで、すべての朝はそれに取り組んでいました。リンターをインストールし、いくつかのテストを書きましたので、時間の無駄ではありませんでした。しかし、これは今では素晴らしいです – jaruesink

関連する問題