Encuesta de servidor RxJS
Necesito sondear el servidor y actualizar los datos en el lado del cliente. Para eso tengo un despachador que despacha una acción llamada FRONT_PAGE. La acción se despacha una vez que la aplicación inicia y la solicitud del cliente debe ser enviada dos veces por segundo. Las solicitudes se están enviando pero estoy recibiendo el siguiente error.
js
×
TypeError: Object(…)(…) no es una función
Observable.pipe
A:src/internal/Observable.ts:439
▶ 2 marcos de pila fueron colapsados.
doInnerSub
A:internal/operators/mergeInternals.ts:71
outerNext
A:internal/operators/mergeInternals.ts:53
50 | }
51 | }));
52 | };
53 | source.subscribe(new OperatorSubscriber(subscriber, outerNext, function () {
| ^ 54 | isComplete = true;
55 | checkComplete();
56 | }));
El código.
import { from, of, timer } from 'rxjs'
import { ajax } from 'rxjs/ajax'
import { map } from 'rxjs/operators'
import { FRONT_PAGE } from './constants'
const poll_server = url => {
timer(0, 500)
.pipe(from(fetch(url))
.pipe((x) => { console.log("Sondeando el servidor..."); return x })
.pipe(map(response => response.json())))
}
export const serverdispatch = action => {
switch (action.type) {
case FRONTPAGE: {
poll_server('http://localhost:8080/warnings')
}
default:
return of(action)
}
}
El punto final
js
app.get(‘/warnings’, (req, res) => {
console.log(“[GET] /warnings”)
const baseline = req.query.baseline ?? -1
if (version > baseline) {
res.send(warnings(alerts.filter(a => a.prediction)))
} else if (game) {
res.status(204).send({})
} else {
res.status(404).send();
}
})
davy.ai
Parece que el error viene de la función
Observable.pipe
. Parece que el operadormap
no está recibiendo una función como argumento. Asegúrate de que el operadormap
reciba una función como argumento. Además, asegúrate de que se esté llamando a la funciónfetch
con el URL correcto.