forked from ktorio/ktor-documentation
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Configuration-code.topic
76 lines (61 loc) · 3.79 KB
/
Configuration-code.topic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE topic SYSTEM "https://helpserver.labs.jb.gg/help/schemas/mvp/html-entities.dtd">
<topic xsi:noNamespaceSchemaLocation="https://helpserver.labs.jb.gg/help/schemas/mvp/topic.v2.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
title="Configuration in code"
id="Configuration-code">
<show-structure for="chapter"/>
<link-summary>
This topic describes how to configure various server parameters in code.
Server parameters include a host address and port, modules to load, and so on.
</link-summary>
<p>
Ktor allows you to configure various server parameters, such as a host address and port, <a href="Modules.md">modules</a> to load, and so on.
The configuration depends on the way you used to create a server - <a href="create_server.topic">embeddedServer or EngineMain</a>.
</p>
<p>
For <code>embeddedServer</code>, you can configure server parameters in code by passing the required parameters to the <code>embeddedServer</code> function.
The <a href="https://api.ktor.io/ktor-server/ktor-server-host-common/io.ktor.server.engine/embedded-server.html">embeddedServer</a> function accepts different parameters for configuring a server, including a <a href="Engines.md">server engine</a>, a host and port to listen, and so on.
In this section, we'll take a look at several examples of running <code>embeddedServer</code> with different setting.
</p>
<chapter title="Basic configuration" id="embedded-basic">
<p>
The code snippet below shows the basic server setup with the Netty engine and the <code>8080</code> port.
</p>
<code-block
lang="kotlin"
src="snippets/_misc/EmbeddedServerConfigure.kt">
</code-block>
<p>
Note that you can set the <code>port</code> parameter to <code>0</code> to run the server on a random port.
The <code>embeddedServer</code> function returns an engine instance, so you can get a port value in code using the <a href="https://api.ktor.io/ktor-server/ktor-server-host-common/io.ktor.server.engine/-application-engine/resolved-connectors.html">ApplicationEngine.resolvedConnectors</a> function.
</p>
</chapter>
<chapter title="Engine configuration" id="embedded-engine">
<p>
In the example below, we've added the <code>configure</code> parameter for configuring setting specific for a selected engine. You can learn more about configuring engines from <a href="Engines.md" anchor="configure-engine"/>.
</p>
<code-block
lang="kotlin"
src="snippets/_misc/EmbeddedServerConfigureEngine.kt">
</code-block>
</chapter>
<chapter title="Custom environment" id="embedded-custom">
<p>
The example below shows how to run a server with multiple connector endpoints
using a custom environment represented by the <a href="https://api.ktor.io/ktor-server/ktor-server-host-common/io.ktor.server.engine/-application-engine-environment/index.html">ApplicationEngineEnvironment</a> interface.
</p>
<code-block
lang="kotlin"
src="snippets/embedded-server-multiple-connectors/src/main/kotlin/com/example/Application.kt" include-lines="3-28">
</code-block>
<p>
You can find the full example here: <a href="https://github.com/ktorio/ktor-documentation/tree/%ktor_version%/codeSnippets/snippets/embedded-server-multiple-connectors">embedded-server-multiple-connectors</a>.
</p>
<tip>
<p>
You can also use a custom environment to <a href="ssl.md" anchor="embedded-server">serve HTTPS</a>.
</p>
</tip>
</chapter>
</topic>