В моем Rust приложении может, я начинаю Iron так:Curl может подключиться к Железным серверу на локальном хосте, но Scala периодически не
let host: &str = &format!("localhost:{}", port);
info!("Server running at http://{}", host);
Iron::new(Chain::new(router)).http(host).expect("Could not start Iron server");
Он отвечает:
INFO Server running at http://localhost:3000
Я могу завить это:
$ curl "http://localhost:3000/v1/foo"
{"bar":"baz"}
Однако в Scala я не могу подключиться:
$ scala
Welcome to Scala 2.11.8 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_40).
Type in expressions for evaluation. Or try :help.
scala> scala.io.Source.fromURL("http://localhost:3000/v1/foo").mkString
java.net.ConnectException: Connection refused
at java.net.PlainSocketImpl.socketConnect(Native Method)
спрей-клиент также не может подключиться:
spray.can.Http$ConnectionAttemptFailedException: Connection attempt to 127.0.0.1:3000 failed
Обе эти попытки из того же IP и локальный правильно. Сервер Iron ничего не регистрирует при неудачном запросе на соединение.
Различные комбинации
Я неправильно определил это. Использование localhost
vs
127.0.0.1
как на клиенте, так и на сервере не устраняют проблему.
127.0.0.1
в клиенте Rust устраняет проблему.
После перерыва код начал работать. Я не помню, перезапустил ли я Iron. Затем я сделал несколько часов разработки против него. На каком-то этапе он снова начал работать. Перезапуск сервера JVM и/или Iron не помогает устранить проблему.
Это не относится к моему приложению Rust;
Я могу воссоздать проблему с примером hello world Iron app.
$ git clone https://github.com/iron/iron.git
$ (cd iron && cargo run --example hello)
, а затем
$ curl "http://localhost:3000/"
Hello world!
но
$ scala
scala> scala.io.Source.fromURL("http://localhost:3000/").mkString
java.net.ConnectException: Connection refused
- OSX 10.11.6
- грузов 0.13.0-ночные (9399229 2016-09-14)
- также испытано против груза 0.13.0-nightly (19cfb67 2016-09-28)
В вашем приложении Scala, если вы подключитесь к 127.0.0.1, вместо localhost, это сработает? (или аналогично, если вы начинаете приложение ржавчины на 127.0.0.1?) –
Спасибо за предложение Эрик. После обеда и возвращения, он работает. Я не знаю, что могло быть неправильно, но я предполагаю, что совершил простую ошибку. Удаление этого вопроса ... – Synesso
Восстановил этот вопрос. Это прерывистая проблема! – Synesso