Я пытаюсь сделать простой переадресатор команд для подключения моего домашнего компьютера к серверу, которым я владею, чтобы я мог передавать команды на мой сервер, а мой домашний ПК получал их. Эти команды - простая пауза/возобновление для моего загрузчика. Моя схема такова: на сервере я запускаю экземпляр концентратора, который создает окно для передачи команд и окно бэкенда для передачи этих команд на мой ПК. Я связываю эти два "окна" каналом, они запускают сервер. Когда клиент подключается и отправляет сообщение на концентратор, оно передается по каналу в окно бэкенда, а затем в настоящий бэкенд (на моем домашнем ПК). Когда backend отвечает на окно backend на хабе, хаб печатает результат обратно клиенту.
При таком подходе только первое сообщение проходит и работает с моим загрузчиком. Мне приходится переподключать backend с моего домашнего ПК к концентратору каждый раз, когда я получаю сообщение, чтобы заставить его работать должным образом. Я не думаю, что это правильный способ с websockets, поэтому я здесь. После одного успешного запроса (когда бэкенд завершает свою работу и отвечает результатом), он зацикливается навсегда с ошибкой EOF.
Важные части кода:
Если вы поместите исходник в GOPATH (я разрабатываю его для tip-версии go для поддержки современных websockets), то для компиляции:
go build gosab/cmd
, для запуска:
./cmd -mode="hub"
hub./cmd -mode="backend" --address="localhost:8082"
backendДля передачи сообщений в хаб используйте этот javascript:
var s = new WebSocket("ws://localhost:8082")
s.send("1 5")
Так как же мне с этим работать? Являются ли каналы хорошим способом связи между двумя различными запросами?