orangy
cy
04/19/2018, 2:40 PMorangy
dave08
04/19/2018, 3:08 PMcy
04/19/2018, 3:29 PMdata class PortRouteSelector(val ports: List<IntRange>) : RouteSelector(RouteSelectorEvaluation.qualityConstant) {
override fun evaluate(context: RoutingResolveContext, segmentIndex: Int): RouteSelectorEvaluation {
val callPort = context.call.request.local.port
return if (ports.any { callPort in it }) {
RouteSelectorEvaluation.Constant
} else {
RouteSelectorEvaluation.Failed
}
}
}
fun Route.localPort(vararg ports: Int, block: Route.() -> Unit): Route {
return createChild(PortRouteSelector(ports.map { it..it })).apply(block)
}
dave08
04/19/2018, 3:31 PMembeddedServer
...cy
04/19/2018, 3:41 PMfun main(args: Array<String>) {
val env = applicationEngineEnvironment {
module {
main()
}
connector {
port = 9090
}
connector {
port = 8080
}
sslConnector() {
port = 8443
}
}
embeddedServer(Netty, env).start(true)
}
Deactivated User
04/19/2018, 3:43 PMcy
04/19/2018, 3:44 PMconnector
has host
parameter so a particular connector could listen a specific subnet/addressdave08
04/19/2018, 3:50 PM/**
* Creates an embedded server with the given [factory], listening on [endpoints] list of Pair(host, port)
* @param watchPaths specifies path substrings that will be watched for automatic reloading
* @param configure configuration script for the engine
* @param module application module function
*/
fun <TEngine : ApplicationEngine, TConfiguration : ApplicationEngine.Configuration>
embeddedServer(factory: ApplicationEngineFactory<TEngine, TConfiguration>,
endpoints: List<Pair<String, Int>> = listOf(Pair("0.0.0.0", 80)),
watchPaths: List<String> = emptyList(),
configure: TConfiguration.() -> Unit = {},
module: Application.() -> Unit): TEngine {
val environment = applicationEngineEnvironment {
this.log = LoggerFactory.getLogger("ktor.application")
this.watchPaths = watchPaths
this.module(module)
endpoints.forEach { endpoint ->
connector {
this.port = endpoint.first
this.host = endpoint.second
}
}
}
return embeddedServer(factory, environment, configure)
}
embeddedServer
implementation...