Estoy realmente desesperada ahora. Necesito diseñar y codificar una solución que nunca pensé que estaría haciendo, y parece completamente poco realista lograrlo (para mí) con clean express. Pero podría estar equivocado.
Lo que necesito es:
Pero ahora, lo que necesito es alguna forma eficiente de hacerlo, de comunicarnos entre nosotros. Así que la aplicación tiene que ser básicamente un puente entre todos ellos. Estaba pensando en usar algún tipo de biblioteca de administración de estado, como la solución Redux, de esa manera (al menos eso creo) podría lograrlo con bastante facilidad. Pero tampoco he encontrado ninguno de este tipo, para el nodo, ni tampoco encontré cómo lograrlo en el backend.
Entonces, la pregunta es: ¿cuál es la mejor solución para lograr una comunicación de uno a muchos y de muchos a uno entre múltiples conexiones socket.io? De nuevo, para que quede claro.
conexión de cliente de socket = conexión a un servidor ya existente, como una aplicación de nodo.
No estoy hablando de hacer una solución simple para que los clientes se comuniquen entre sí en 1 servidor. Quiero crear 1 servidor y conectarme a muchos otros.
Bien, lo que probablemente quieras hacer es crear una aplicación de "servidor", luego conectar tu aplicación Electron y los bots como clientes a ese servidor.
Para los bots, que se ejecutarían como sus propios scripts de nodo, usaría el paquete socket.io-client y luego lo usaría de la misma manera que usa el cliente en el navegador. Llame a io() con la configuración de su conexión, obtenga un socket de eso y comience a vincular sus eventos como de costumbre:
let io = require('socket.io-client'); let socket = io('http://YOUR_SERVER_IP/'); socket.on('connect', function(){}); socket.on('event', function(data){}); socket.on('disconnect', function(){});Si desea saber la diferencia entre los bots y los clientes de Electron, enviaría algún evento especial en la conexión, que su servidor pueda manejar:
socket.on('connect', function(){ socket.emit('identify_as_bot', {id: IDENTIFIER}) });Espero que eso ayude.