Puse en funcionamiento correctamente mi websocket, pero necesito usar el método .send() en mi ruta.
Tengo mi aplicación dividida en varios archivos. En este caso obtuve:
aplicación.js
//..some other code.. //Server const server = http.createServer(app) var port = process.env.PORT || 80; const connection = server.listen(port, () => { console.log('Listening on ' + port); }); const WebSocketServer = require("ws").Server; const wss = new WebSocketServer({ server }); //Here I need to export the wss module.exports.sengMsg = function (msg, callback) { return wss.on("connection", function (ws) { ws.send(msg, callback); ws.on("close", function () { console.log("websocket connection close") }) }) };api.js
//..some other code.. var sendMsg = require('../app').sendMsg; router.get('/', (req, res) => { sendMsg('Hi I from default route', (err)=>{ console.log("I got some error on ws"); }) res.send('Welcome to my API'); })Pero al final se me ocurre
TypeError: sendMsg no es una función
¿Cuál es la forma recomendada de exportar la funcionalidad de mi wss en mis rutas usando esta configuración?
Intenta cambiar el código a,
var sendMsg = require('./app'); router.get('/', (req, res) => { sendMsg.sendMsg('Hi I from default route', (err)=>{ console.log("I got some error on ws"); }) res.send('Welcome to my API'); })o cambie app.js module.exports a siguiente,
module.exports = { sendMessage :function (msg, callback) { return wss.on("connection", function (ws) { ws.send(msg, callback); ws.on("close", function () { console.log("websocket connection close") }) }) } }