es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo uso los sockets en sailsjs versión 1.4?

Estoy intentando usar sockets en sailsjs. Tengo una acción que solo devuelve el socketId.


module.exports = async function exampleAction(req, res) {
if (!req.isSocket) {
console.log("no es un req de socket");
return res.badRequest();
}
sails.sockets.getId(req);
return res.json({ socketid: sails.sockets.getId(req) });
};

En routes.js:


"GET /label/exampleaction": {
action: "label/example-action",
isSocket: true,
},

Estoy tratando de conectarme a esto desde nuxt.js usando Websocket:

this.connection = new WebSocket("ws://localhost:1337/label/exampleaction");

Esto me da un error:

La conexión de WebSocket en 'ws://localhost:1337/label/exampleaction' falló:

¿Qué estoy haciendo mal?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Según los fragmentos de código que proporcionó, parece que está intentando conectarse a la acción exampleAction utilizando Websocket. Sin embargo, en su archivo routes.js, está especificando isSocket: true para esta acción, lo que indica que es una ruta de socket de Sails.js, no una ruta de WebSocket.

    Para establecer correctamente una conexión WebSocket, es necesario definir una ruta separada para conexiones WebSocket en el archivo config/sockets.js de la siguiente manera:

    module.exports.sockets = {
      routes: {
        'get /label/exampleaction': 'LabelController.exampleAction'
      }
    };
    

    Esto definirá una ruta de WebSocket para la acción exampleAction. Luego, puede establecer una conexión WebSocket desde su aplicación Nuxt.js utilizando el siguiente código:

    this.connection = new WebSocket("ws://localhost:1337/label/exampleaction");
    

    Asegúrese de que el servidor de Sails.js esté en ejecución en localhost:1337 antes de intentar conectarse a la ruta de WebSocket.

Comments are closed.