Estoy tratando de hacer que un simple reenviador de comandos conecte la computadora de mi casa a un servidor que poseo, de modo que pueda enviar comandos a mi servidor y mi pc doméstica lo obtenga. Esos comandos son simples pausas/reanudaciones para mi descargador. Mi diseño es que en un servidor ejecuto una instancia de concentrador, que crea una ventana para pasar comandos y una ventana para que back-end pase esos comandos a mi pc. Estoy limitando esas dos "ventanas" con un canal, ejecutan un servidor. Cuando un cliente se conecta y envía un mensaje al concentrador, se transmite por un canal a la ventana de back-end y luego al back-end real (en mi PC hogareña). Cuando back-end responde a la ventana de back-end en el hub, el hub imprime el resultado de vuelta al cliente.vaya websockets eof
Con este enfoque, solo el primer mensaje pasa y funciona con mi programa de descarga. Tengo que volver a conectar el backend de la pc de mi casa con el concentrador cada vez que recibo un mensaje para que funcione correctamente. No creo que sea la forma correcta de websockets, así que aquí estoy. Después de una solicitud exitosa (cuando el servidor finaliza su trabajo y responde el resultado), se bifurca para siempre con un error EOF.
Las partes importantes del código son:
Si coloca la fuente en su GOPATH (estoy desarrollando para la punta versión de go to support websockets moderna), para compilarlo: go build gosab/cmd
, ejecutarlo:
./cmd -mode="hub"
centro./cmd -mode="backend" --address="localhost:8082"
backend
para pasar mensajes al concentrador, utilice este javascript:
var s = new WebSocket("ws://localhost:8082")
s.send("1 5")
Entonces, ¿cómo lo manejo? ¿Los canales son una buena forma de comunicarse entre dos solicitudes diferentes?
Reinventando la rueda, ¿tal vez por diversión? Suena muy parecido a Salt: http://saltstack.org/ o Puppet Labs Marionette: http://docs.puppetlabs.com/mcollective/index.html – djangofan
buenos enlaces, pero quiero implementar algo como esto por mi cuenta – farnoy
I use algo similar (un servidor de juegos con comunicación entre el navegador y el servidor en websockets) para saber cómo hacerlo de una vez, pero no entiendo cuál es la verdadera pregunta aquí.Si solo se trata de "son canales una buena forma de comunicarse", la respuesta es SÍ. –