node.js - alternativa a express-ws en TypeScript
He estado buscando durante unos días, pero todavía no he encontrado ninguna alternativa ni ayuda para escribir una declaración de TypeScript para ello, ya que también lo intenté.
https://www.npmjs.com/package/express-ws
Lo importante es que funcione con cualquier otra ruta en Express. Autenticación, roles y parámetros de ruta.
Respuesta #1
Las definiciones de tipos para express-ws han sido creadas.
Las pruebas muestran cómo usarlo:
import expressWs from 'express-ws';
const { app, getWss, applyTo } = expressWs(express());
O :
const app = expressWs(express()).app;
Entonces, por ejemplo, al declarar rutas en lugar de escribir:
const myRoutes = function(app: Express) {...}
Necesitas especificar el tipo express-ws:
import expressWs from 'express-ws';
const myRoutes = function(app: expressWs.Application) {...}
Respuesta #2
Gracias Derek Hill y Normunds Kalnberzins
Trabajar con enrutadores es mejor
Primero importa express-ws
import expressWs from 'express-ws';
Para usar el método ws, necesitas fortalecer express (lo entiendo de esta manera)
const { app, getWss, applyTo } = expressWs(express());
después de eso express.Router contiene el método ws, pero el tipo de TypeScript es incorrecto, solo necesitas convertir el tipo.
const router = express.Router() as expressWs.Router;
Definir la lógica de enrutamiento
router.ws('/echo', (ws, req) => {
ws.on('message', (msg: String) => {
ws.send(msg);
});
});
Finalmente agrega router a la app de express
app.use("/ws-stuff", router);
