我想尝试以下小例子:
object Webserver {
def main(args: Array[String]) {
implicit val system = ActorSystem("my-system")
implicit val materializer = ActorMaterializer()
// needed for the future flatMap/onComplete in the end
implicit val executionContext = system.dispatcher
val route =
path("hello") {
get {
redirect(Uri("https://google.com"), StatusCodes.PermanentRedirect)
}
}
val bindingFuture = Http().bindAndHandle(route, "localhost", 8080)
println(s"Server online at http://localhost:8080/\nPress RETURN to stop...")
StdIn.readLine() // let it run until user presses return
bindingFuture
.flatMap(_.unbind()) // trigger unbinding from the port
.onComplete(_ => system.terminate()) // and shutdown when done
}
}
从macOS上的同一主机访问时,这非常有效。但是,当我远程访问主机时,我无法访问akka网络服务器。
我已经检查了我的防火墙选项,并且我验证了程序java
允许传入连接。
另一个可疑的事情:当我运行python -m SimpleHTTPServer 8080
时,我会看到以下窗口:
启动mykka应用程序时,我没有这个窗口。我是否必须实现自定义逻辑以请求许可或其他什么?
答案 0 :(得分:2)
要启用对服务器的远程访问,需要将服务器绑定到外部接口。要简单地绑定到所有接口,您可以将主机/ IP设置为0.0.0.0
,例如:
Http().bindAndHandle(route, "0.0.0.0", 8080)