mirror of
https://github.com/InsanusMokrassar/docs.git
synced 2025-10-25 09:10:15 +00:00
deploy: f7a2359066
This commit is contained in:
@@ -1245,85 +1245,85 @@
|
||||
Here will be presented variants of configuration of webhooks and starting server. You always able to set webhook manualy, create your own ktor server and include webhooks handling in it or create and start server with only webhooks handling. More info you can get on page <a href="webhooks.html">Webhooks</a></p>
|
||||
</div>
|
||||
<h3 id="short-example-with-behaviour-builder">Short example with Behaviour Builder<a class="headerlink" href="#short-example-with-behaviour-builder" title="Permanent link">¶</a></h3>
|
||||
<pre><code class="language-kotlin">suspend fun main {
|
||||
// This subroute will be used as random webhook subroute to improve security according to the recommendations of Telegram
|
||||
val subroute = uuid4().toString()
|
||||
// Input/Output coroutines scope more info here: https://kotlinlang.org/docs/coroutines-guide.html
|
||||
val scope = CoroutineScope(Dispatchers.IO)
|
||||
// Here will be automatically created bot and available inside of lambda where you will setup your bot behaviour
|
||||
telegramBotWithBehaviour(
|
||||
// Pass TOKEN inside of your application environment variables
|
||||
System.getenv("TOKEN"),
|
||||
scope = scope
|
||||
) {
|
||||
// Set up webhooks and start to listen them
|
||||
setWebhookInfoAndStartListenWebhooks(
|
||||
// Automatic env which will be passed by heroku to the app
|
||||
System.getenv("PORT").toInt(),
|
||||
// Server engine. More info here: https://ktor.io/docs/engines.html
|
||||
Tomcat,
|
||||
// Pass URL environment variable via settings of application. It must looks like https://<app name>.herokuapp.com
|
||||
SetWebhook("${System.getenv("URL").removeSuffix("/")}/$subroute"),
|
||||
// Just callback which will be called when exceptions will happen inside of webhooks
|
||||
{
|
||||
it.printStackTrace()
|
||||
},
|
||||
// Set up listen requests from outside
|
||||
"0.0.0.0",
|
||||
// Set up subroute to listen webhooks to
|
||||
subroute,
|
||||
// BehaviourContext is the CoroutineScope and it is recommended to pass it inside of webhooks server
|
||||
scope = this,
|
||||
// BehaviourContext is the FlowsUpdatesFilter and it is recommended to pass its asUpdateReceiver as a block to retrieve all the updates
|
||||
block = asUpdateReceiver
|
||||
)
|
||||
// Test reaction on each command with reply and text `Got it`
|
||||
onUnhandledCommand {
|
||||
reply(it, "Got it")
|
||||
}
|
||||
}
|
||||
// Just potentially infinite await of bot completion
|
||||
scope.coroutineContext.job.join()
|
||||
}
|
||||
</code></pre>
|
||||
<div class="language-kotlin highlight"><pre><span></span><code><span id="__span-0-1"><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="kd">suspend</span><span class="w"> </span><span class="kd">fun</span><span class="w"> </span><span class="nf">main</span><span class="w"> </span><span class="p">{</span>
|
||||
</span><span id="__span-0-2"><a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a><span class="w"> </span><span class="c1">// This subroute will be used as random webhook subroute to improve security according to the recommendations of Telegram</span>
|
||||
</span><span id="__span-0-3"><a id="__codelineno-0-3" name="__codelineno-0-3" href="#__codelineno-0-3"></a><span class="w"> </span><span class="kd">val</span><span class="w"> </span><span class="nv">subroute</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">uuid4</span><span class="p">().</span><span class="na">toString</span><span class="p">()</span>
|
||||
</span><span id="__span-0-4"><a id="__codelineno-0-4" name="__codelineno-0-4" href="#__codelineno-0-4"></a><span class="w"> </span><span class="c1">// Input/Output coroutines scope more info here: https://kotlinlang.org/docs/coroutines-guide.html</span>
|
||||
</span><span id="__span-0-5"><a id="__codelineno-0-5" name="__codelineno-0-5" href="#__codelineno-0-5"></a><span class="w"> </span><span class="kd">val</span><span class="w"> </span><span class="nv">scope</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">CoroutineScope</span><span class="p">(</span><span class="n">Dispatchers</span><span class="p">.</span><span class="na">IO</span><span class="p">)</span>
|
||||
</span><span id="__span-0-6"><a id="__codelineno-0-6" name="__codelineno-0-6" href="#__codelineno-0-6"></a><span class="w"> </span><span class="c1">// Here will be automatically created bot and available inside of lambda where you will setup your bot behaviour</span>
|
||||
</span><span id="__span-0-7"><a id="__codelineno-0-7" name="__codelineno-0-7" href="#__codelineno-0-7"></a><span class="w"> </span><span class="n">telegramBotWithBehaviour</span><span class="p">(</span>
|
||||
</span><span id="__span-0-8"><a id="__codelineno-0-8" name="__codelineno-0-8" href="#__codelineno-0-8"></a><span class="w"> </span><span class="c1">// Pass TOKEN inside of your application environment variables</span>
|
||||
</span><span id="__span-0-9"><a id="__codelineno-0-9" name="__codelineno-0-9" href="#__codelineno-0-9"></a><span class="w"> </span><span class="n">System</span><span class="p">.</span><span class="na">getenv</span><span class="p">(</span><span class="s">"TOKEN"</span><span class="p">),</span>
|
||||
</span><span id="__span-0-10"><a id="__codelineno-0-10" name="__codelineno-0-10" href="#__codelineno-0-10"></a><span class="w"> </span><span class="n">scope</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">scope</span>
|
||||
</span><span id="__span-0-11"><a id="__codelineno-0-11" name="__codelineno-0-11" href="#__codelineno-0-11"></a><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||||
</span><span id="__span-0-12"><a id="__codelineno-0-12" name="__codelineno-0-12" href="#__codelineno-0-12"></a><span class="w"> </span><span class="c1">// Set up webhooks and start to listen them</span>
|
||||
</span><span id="__span-0-13"><a id="__codelineno-0-13" name="__codelineno-0-13" href="#__codelineno-0-13"></a><span class="w"> </span><span class="n">setWebhookInfoAndStartListenWebhooks</span><span class="p">(</span>
|
||||
</span><span id="__span-0-14"><a id="__codelineno-0-14" name="__codelineno-0-14" href="#__codelineno-0-14"></a><span class="w"> </span><span class="c1">// Automatic env which will be passed by heroku to the app</span>
|
||||
</span><span id="__span-0-15"><a id="__codelineno-0-15" name="__codelineno-0-15" href="#__codelineno-0-15"></a><span class="w"> </span><span class="n">System</span><span class="p">.</span><span class="na">getenv</span><span class="p">(</span><span class="s">"PORT"</span><span class="p">).</span><span class="na">toInt</span><span class="p">(),</span>
|
||||
</span><span id="__span-0-16"><a id="__codelineno-0-16" name="__codelineno-0-16" href="#__codelineno-0-16"></a><span class="w"> </span><span class="c1">// Server engine. More info here: https://ktor.io/docs/engines.html</span>
|
||||
</span><span id="__span-0-17"><a id="__codelineno-0-17" name="__codelineno-0-17" href="#__codelineno-0-17"></a><span class="w"> </span><span class="n">Tomcat</span><span class="p">,</span>
|
||||
</span><span id="__span-0-18"><a id="__codelineno-0-18" name="__codelineno-0-18" href="#__codelineno-0-18"></a><span class="w"> </span><span class="c1">// Pass URL environment variable via settings of application. It must looks like https://<app name>.herokuapp.com</span>
|
||||
</span><span id="__span-0-19"><a id="__codelineno-0-19" name="__codelineno-0-19" href="#__codelineno-0-19"></a><span class="w"> </span><span class="n">SetWebhook</span><span class="p">(</span><span class="s">"</span><span class="si">${</span><span class="n">System</span><span class="p">.</span><span class="na">getenv</span><span class="p">(</span><span class="s">"</span><span class="n">URL</span><span class="s">"</span><span class="p">).</span><span class="na">removeSuffix</span><span class="p">(</span><span class="s">"</span><span class="o">/</span><span class="s">"</span><span class="p">)</span><span class="si">}</span><span class="s">/</span><span class="si">$</span><span class="n">subroute</span><span class="s">"</span><span class="p">),</span>
|
||||
</span><span id="__span-0-20"><a id="__codelineno-0-20" name="__codelineno-0-20" href="#__codelineno-0-20"></a><span class="w"> </span><span class="c1">// Just callback which will be called when exceptions will happen inside of webhooks</span>
|
||||
</span><span id="__span-0-21"><a id="__codelineno-0-21" name="__codelineno-0-21" href="#__codelineno-0-21"></a><span class="w"> </span><span class="p">{</span>
|
||||
</span><span id="__span-0-22"><a id="__codelineno-0-22" name="__codelineno-0-22" href="#__codelineno-0-22"></a><span class="w"> </span><span class="nb">it</span><span class="p">.</span><span class="na">printStackTrace</span><span class="p">()</span>
|
||||
</span><span id="__span-0-23"><a id="__codelineno-0-23" name="__codelineno-0-23" href="#__codelineno-0-23"></a><span class="w"> </span><span class="p">},</span>
|
||||
</span><span id="__span-0-24"><a id="__codelineno-0-24" name="__codelineno-0-24" href="#__codelineno-0-24"></a><span class="w"> </span><span class="c1">// Set up listen requests from outside</span>
|
||||
</span><span id="__span-0-25"><a id="__codelineno-0-25" name="__codelineno-0-25" href="#__codelineno-0-25"></a><span class="w"> </span><span class="s">"0.0.0.0"</span><span class="p">,</span>
|
||||
</span><span id="__span-0-26"><a id="__codelineno-0-26" name="__codelineno-0-26" href="#__codelineno-0-26"></a><span class="w"> </span><span class="c1">// Set up subroute to listen webhooks to</span>
|
||||
</span><span id="__span-0-27"><a id="__codelineno-0-27" name="__codelineno-0-27" href="#__codelineno-0-27"></a><span class="w"> </span><span class="n">subroute</span><span class="p">,</span>
|
||||
</span><span id="__span-0-28"><a id="__codelineno-0-28" name="__codelineno-0-28" href="#__codelineno-0-28"></a><span class="w"> </span><span class="c1">// BehaviourContext is the CoroutineScope and it is recommended to pass it inside of webhooks server</span>
|
||||
</span><span id="__span-0-29"><a id="__codelineno-0-29" name="__codelineno-0-29" href="#__codelineno-0-29"></a><span class="w"> </span><span class="n">scope</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">this</span><span class="p">,</span>
|
||||
</span><span id="__span-0-30"><a id="__codelineno-0-30" name="__codelineno-0-30" href="#__codelineno-0-30"></a><span class="w"> </span><span class="c1">// BehaviourContext is the FlowsUpdatesFilter and it is recommended to pass its asUpdateReceiver as a block to retrieve all the updates</span>
|
||||
</span><span id="__span-0-31"><a id="__codelineno-0-31" name="__codelineno-0-31" href="#__codelineno-0-31"></a><span class="w"> </span><span class="n">block</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">asUpdateReceiver</span>
|
||||
</span><span id="__span-0-32"><a id="__codelineno-0-32" name="__codelineno-0-32" href="#__codelineno-0-32"></a><span class="w"> </span><span class="p">)</span>
|
||||
</span><span id="__span-0-33"><a id="__codelineno-0-33" name="__codelineno-0-33" href="#__codelineno-0-33"></a><span class="w"> </span><span class="c1">// Test reaction on each command with reply and text `Got it`</span>
|
||||
</span><span id="__span-0-34"><a id="__codelineno-0-34" name="__codelineno-0-34" href="#__codelineno-0-34"></a><span class="w"> </span><span class="n">onUnhandledCommand</span><span class="w"> </span><span class="p">{</span>
|
||||
</span><span id="__span-0-35"><a id="__codelineno-0-35" name="__codelineno-0-35" href="#__codelineno-0-35"></a><span class="w"> </span><span class="n">reply</span><span class="p">(</span><span class="nb">it</span><span class="p">,</span><span class="w"> </span><span class="s">"Got it"</span><span class="p">)</span>
|
||||
</span><span id="__span-0-36"><a id="__codelineno-0-36" name="__codelineno-0-36" href="#__codelineno-0-36"></a><span class="w"> </span><span class="p">}</span>
|
||||
</span><span id="__span-0-37"><a id="__codelineno-0-37" name="__codelineno-0-37" href="#__codelineno-0-37"></a><span class="w"> </span><span class="p">}</span>
|
||||
</span><span id="__span-0-38"><a id="__codelineno-0-38" name="__codelineno-0-38" href="#__codelineno-0-38"></a><span class="w"> </span><span class="c1">// Just potentially infinite await of bot completion</span>
|
||||
</span><span id="__span-0-39"><a id="__codelineno-0-39" name="__codelineno-0-39" href="#__codelineno-0-39"></a><span class="w"> </span><span class="n">scope</span><span class="p">.</span><span class="na">coroutineContext</span><span class="p">.</span><span class="na">job</span><span class="p">.</span><span class="na">join</span><span class="p">()</span>
|
||||
</span><span id="__span-0-40"><a id="__codelineno-0-40" name="__codelineno-0-40" href="#__codelineno-0-40"></a><span class="p">}</span>
|
||||
</span></code></pre></div>
|
||||
<h3 id="configuration-example-without-behaviour-builder">Configuration example without Behaviour Builder<a class="headerlink" href="#configuration-example-without-behaviour-builder" title="Permanent link">¶</a></h3>
|
||||
<pre><code class="language-kotlin">// This subroute will be used as random webhook subroute to improve security according to the recommendations of Telegram
|
||||
val subroute = uuid4().toString()
|
||||
val bot = telegramBot(TOKEN)
|
||||
val scope = CoroutineScope(Dispatchers.Default)
|
||||
|
||||
val filter = flowsUpdatesFilter {
|
||||
messageFlow.onEach {
|
||||
println(it) // will be printed
|
||||
}.launchIn(scope)
|
||||
}
|
||||
|
||||
val subroute = UUID.randomUUID().toString() // It will be used as subpath for security target as recommended by https://core.telegram.org/bots/api#setwebhook
|
||||
|
||||
val server = bot.setWebhookInfoAndStartListenWebhooks(
|
||||
// Automatic env which will be passed by heroku to the app
|
||||
System.getenv("PORT").toInt(),
|
||||
// Server engine. More info here: https://ktor.io/docs/engines.html
|
||||
Tomcat,
|
||||
// Pass URL environment variable via settings of application. It must looks like https://<app name>.herokuapp.com
|
||||
SetWebhook("${System.getenv("URL").removeSuffix("/")}/$subroute"),
|
||||
// Just callback which will be called when exceptions will happen inside of webhooks
|
||||
{
|
||||
it.printStackTrace()
|
||||
},
|
||||
// Set up listen requests from outside
|
||||
"0.0.0.0",
|
||||
// Set up subroute to listen webhooks to
|
||||
subroute,
|
||||
scope = scope,
|
||||
block = filter.asUpdateReceiver
|
||||
)
|
||||
|
||||
server.environment.connectors.forEach {
|
||||
println(it)
|
||||
}
|
||||
server.start(false)
|
||||
</code></pre>
|
||||
<div class="language-kotlin highlight"><pre><span></span><code><span id="__span-1-1"><a id="__codelineno-1-1" name="__codelineno-1-1" href="#__codelineno-1-1"></a><span class="c1">// This subroute will be used as random webhook subroute to improve security according to the recommendations of Telegram</span>
|
||||
</span><span id="__span-1-2"><a id="__codelineno-1-2" name="__codelineno-1-2" href="#__codelineno-1-2"></a><span class="kd">val</span><span class="w"> </span><span class="nv">subroute</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">uuid4</span><span class="p">().</span><span class="na">toString</span><span class="p">()</span>
|
||||
</span><span id="__span-1-3"><a id="__codelineno-1-3" name="__codelineno-1-3" href="#__codelineno-1-3"></a><span class="kd">val</span><span class="w"> </span><span class="nv">bot</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">telegramBot</span><span class="p">(</span><span class="n">TOKEN</span><span class="p">)</span>
|
||||
</span><span id="__span-1-4"><a id="__codelineno-1-4" name="__codelineno-1-4" href="#__codelineno-1-4"></a><span class="kd">val</span><span class="w"> </span><span class="nv">scope</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">CoroutineScope</span><span class="p">(</span><span class="n">Dispatchers</span><span class="p">.</span><span class="na">Default</span><span class="p">)</span>
|
||||
</span><span id="__span-1-5"><a id="__codelineno-1-5" name="__codelineno-1-5" href="#__codelineno-1-5"></a>
|
||||
</span><span id="__span-1-6"><a id="__codelineno-1-6" name="__codelineno-1-6" href="#__codelineno-1-6"></a><span class="kd">val</span><span class="w"> </span><span class="nv">filter</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">flowsUpdatesFilter</span><span class="w"> </span><span class="p">{</span>
|
||||
</span><span id="__span-1-7"><a id="__codelineno-1-7" name="__codelineno-1-7" href="#__codelineno-1-7"></a><span class="w"> </span><span class="n">messageFlow</span><span class="p">.</span><span class="na">onEach</span><span class="w"> </span><span class="p">{</span>
|
||||
</span><span id="__span-1-8"><a id="__codelineno-1-8" name="__codelineno-1-8" href="#__codelineno-1-8"></a><span class="w"> </span><span class="n">println</span><span class="p">(</span><span class="nb">it</span><span class="p">)</span><span class="w"> </span><span class="c1">// will be printed </span>
|
||||
</span><span id="__span-1-9"><a id="__codelineno-1-9" name="__codelineno-1-9" href="#__codelineno-1-9"></a><span class="w"> </span><span class="p">}.</span><span class="na">launchIn</span><span class="p">(</span><span class="n">scope</span><span class="p">)</span>
|
||||
</span><span id="__span-1-10"><a id="__codelineno-1-10" name="__codelineno-1-10" href="#__codelineno-1-10"></a><span class="p">}</span>
|
||||
</span><span id="__span-1-11"><a id="__codelineno-1-11" name="__codelineno-1-11" href="#__codelineno-1-11"></a>
|
||||
</span><span id="__span-1-12"><a id="__codelineno-1-12" name="__codelineno-1-12" href="#__codelineno-1-12"></a><span class="kd">val</span><span class="w"> </span><span class="nv">subroute</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">UUID</span><span class="p">.</span><span class="na">randomUUID</span><span class="p">().</span><span class="na">toString</span><span class="p">()</span><span class="w"> </span><span class="c1">// It will be used as subpath for security target as recommended by https://core.telegram.org/bots/api#setwebhook</span>
|
||||
</span><span id="__span-1-13"><a id="__codelineno-1-13" name="__codelineno-1-13" href="#__codelineno-1-13"></a>
|
||||
</span><span id="__span-1-14"><a id="__codelineno-1-14" name="__codelineno-1-14" href="#__codelineno-1-14"></a><span class="kd">val</span><span class="w"> </span><span class="nv">server</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">bot</span><span class="p">.</span><span class="na">setWebhookInfoAndStartListenWebhooks</span><span class="p">(</span>
|
||||
</span><span id="__span-1-15"><a id="__codelineno-1-15" name="__codelineno-1-15" href="#__codelineno-1-15"></a><span class="w"> </span><span class="c1">// Automatic env which will be passed by heroku to the app</span>
|
||||
</span><span id="__span-1-16"><a id="__codelineno-1-16" name="__codelineno-1-16" href="#__codelineno-1-16"></a><span class="w"> </span><span class="n">System</span><span class="p">.</span><span class="na">getenv</span><span class="p">(</span><span class="s">"PORT"</span><span class="p">).</span><span class="na">toInt</span><span class="p">(),</span>
|
||||
</span><span id="__span-1-17"><a id="__codelineno-1-17" name="__codelineno-1-17" href="#__codelineno-1-17"></a><span class="w"> </span><span class="c1">// Server engine. More info here: https://ktor.io/docs/engines.html</span>
|
||||
</span><span id="__span-1-18"><a id="__codelineno-1-18" name="__codelineno-1-18" href="#__codelineno-1-18"></a><span class="w"> </span><span class="n">Tomcat</span><span class="p">,</span>
|
||||
</span><span id="__span-1-19"><a id="__codelineno-1-19" name="__codelineno-1-19" href="#__codelineno-1-19"></a><span class="w"> </span><span class="c1">// Pass URL environment variable via settings of application. It must looks like https://<app name>.herokuapp.com</span>
|
||||
</span><span id="__span-1-20"><a id="__codelineno-1-20" name="__codelineno-1-20" href="#__codelineno-1-20"></a><span class="w"> </span><span class="n">SetWebhook</span><span class="p">(</span><span class="s">"</span><span class="si">${</span><span class="n">System</span><span class="p">.</span><span class="na">getenv</span><span class="p">(</span><span class="s">"</span><span class="n">URL</span><span class="s">"</span><span class="p">).</span><span class="na">removeSuffix</span><span class="p">(</span><span class="s">"</span><span class="o">/</span><span class="s">"</span><span class="p">)</span><span class="si">}</span><span class="s">/</span><span class="si">$</span><span class="n">subroute</span><span class="s">"</span><span class="p">),</span>
|
||||
</span><span id="__span-1-21"><a id="__codelineno-1-21" name="__codelineno-1-21" href="#__codelineno-1-21"></a><span class="w"> </span><span class="c1">// Just callback which will be called when exceptions will happen inside of webhooks</span>
|
||||
</span><span id="__span-1-22"><a id="__codelineno-1-22" name="__codelineno-1-22" href="#__codelineno-1-22"></a><span class="w"> </span><span class="p">{</span>
|
||||
</span><span id="__span-1-23"><a id="__codelineno-1-23" name="__codelineno-1-23" href="#__codelineno-1-23"></a><span class="w"> </span><span class="nb">it</span><span class="p">.</span><span class="na">printStackTrace</span><span class="p">()</span>
|
||||
</span><span id="__span-1-24"><a id="__codelineno-1-24" name="__codelineno-1-24" href="#__codelineno-1-24"></a><span class="w"> </span><span class="p">},</span>
|
||||
</span><span id="__span-1-25"><a id="__codelineno-1-25" name="__codelineno-1-25" href="#__codelineno-1-25"></a><span class="w"> </span><span class="c1">// Set up listen requests from outside</span>
|
||||
</span><span id="__span-1-26"><a id="__codelineno-1-26" name="__codelineno-1-26" href="#__codelineno-1-26"></a><span class="w"> </span><span class="s">"0.0.0.0"</span><span class="p">,</span>
|
||||
</span><span id="__span-1-27"><a id="__codelineno-1-27" name="__codelineno-1-27" href="#__codelineno-1-27"></a><span class="w"> </span><span class="c1">// Set up subroute to listen webhooks to</span>
|
||||
</span><span id="__span-1-28"><a id="__codelineno-1-28" name="__codelineno-1-28" href="#__codelineno-1-28"></a><span class="w"> </span><span class="n">subroute</span><span class="p">,</span>
|
||||
</span><span id="__span-1-29"><a id="__codelineno-1-29" name="__codelineno-1-29" href="#__codelineno-1-29"></a><span class="w"> </span><span class="n">scope</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">scope</span><span class="p">,</span>
|
||||
</span><span id="__span-1-30"><a id="__codelineno-1-30" name="__codelineno-1-30" href="#__codelineno-1-30"></a><span class="w"> </span><span class="n">block</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">filter</span><span class="p">.</span><span class="na">asUpdateReceiver</span>
|
||||
</span><span id="__span-1-31"><a id="__codelineno-1-31" name="__codelineno-1-31" href="#__codelineno-1-31"></a><span class="p">)</span>
|
||||
</span><span id="__span-1-32"><a id="__codelineno-1-32" name="__codelineno-1-32" href="#__codelineno-1-32"></a>
|
||||
</span><span id="__span-1-33"><a id="__codelineno-1-33" name="__codelineno-1-33" href="#__codelineno-1-33"></a><span class="n">server</span><span class="p">.</span><span class="na">environment</span><span class="p">.</span><span class="na">connectors</span><span class="p">.</span><span class="na">forEach</span><span class="w"> </span><span class="p">{</span>
|
||||
</span><span id="__span-1-34"><a id="__codelineno-1-34" name="__codelineno-1-34" href="#__codelineno-1-34"></a><span class="w"> </span><span class="n">println</span><span class="p">(</span><span class="nb">it</span><span class="p">)</span>
|
||||
</span><span id="__span-1-35"><a id="__codelineno-1-35" name="__codelineno-1-35" href="#__codelineno-1-35"></a><span class="p">}</span>
|
||||
</span><span id="__span-1-36"><a id="__codelineno-1-36" name="__codelineno-1-36" href="#__codelineno-1-36"></a><span class="n">server</span><span class="p">.</span><span class="na">start</span><span class="p">(</span><span class="kc">false</span><span class="p">)</span>
|
||||
</span></code></pre></div>
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user