2
Ich fühle mich wie ich bin so nah daran, das funktioniert, aber mir fehlt der letzte Schritt. Es sieht so aus, als ob ich die Dokumentation genau befolge, aber kann mir jemand helfen zu verstehen, was ich vermisse. Hier ist mein @angular Service:FeathersJS mit Socket.io hören auf Ereignisse ist ruhig
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});
}
}
dann hier ist mein Router Code (Unter Route:/Realtime)
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;
und schließlich hier ist mein Service
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;
danke !!! Ich habe das gerade herausgefunden, haha, habe den ganzen Vormittag damit verbracht, daran zu arbeiten. installiert einen Linter und schrieb einige Tests auch, so dass es keine Zeitverschwendung war. Aber das ist großartig, jetzt, wo es funktioniert – jaruesink