<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="description" content=""> <meta name="author" content="Loïc Hoguin based on a design from (Soft10) Pol Cámara"> <meta name="generator" content="Hugo 0.30.2" /> <title>Nine Nines: cowboy:start_clear(3)</title> <link href='https://fonts.googleapis.com/css?family=Open+Sans:400,700,400italic' rel='stylesheet' type='text/css'> <link href="/css/99s.css?r=1" rel="stylesheet"> <link rel="shortcut icon" href="/img/ico/favicon.ico"> <link rel="apple-touch-icon-precomposed" sizes="114x114" href="/img/ico/apple-touch-icon-114.png"> <link rel="apple-touch-icon-precomposed" sizes="72x72" href="/img/ico/apple-touch-icon-72.png"> <link rel="apple-touch-icon-precomposed" href="/img/ico/apple-touch-icon-57.png"> </head> <body class=""> <header id="page-head"> <div id="topbar" class="container"> <div class="row"> <div class="span2"> <h1 id="logo"><a href="/" title="99s">99s</a></h1> </div> <div class="span10"> <div id="side-header"> <nav> <ul> <li><a title="Hear my thoughts" href="/articles">Articles</a></li> <li><a title="Watch my talks" href="/talks">Talks</a></li> <li class="active"><a title="Read the docs" href="/docs">Documentation</a></li> <li><a title="Request my services" href="/services">Consulting & Training</a></li> </ul> </nav> <ul id="social"> <li> <a href="https://github.com/ninenines" title="Check my Github repositories"><img src="/img/ico_github.png" data-hover="/img/ico_github_alt.png" alt="Github"></a> </li> <li> <a title="Keep in touch!" href="http://twitter.com/lhoguin"><img src="/img/ico_microblog.png" data-hover="/img/ico_microblog_alt.png"></a> </li> <li> <a title="Contact me" href="mailto:contact@ninenines.eu"><img src="/img/ico_mail.png" data-hover="/img/ico_mail_alt.png"></a> </li> </ul> </div> </div> </div> </div> </header> <div id="contents" class="two_col"> <div class="container"> <div class="row"> <div id="docs" class="span9 maincol"> <h1 class="lined-header"><span>cowboy:start_clear(3)</span></h1> <div class="sect1"> <h2 id="_name">Name</h2> <div class="sectionbody"> <div class="paragraph"><p>cowboy:start_clear - Listen for connections using plain TCP</p></div> </div> </div> <div class="sect1"> <h2 id="_description">Description</h2> <div class="sectionbody"> <div class="listingblock"> <div class="content"><!-- Generator: GNU source-highlight 3.1.8 by Lorenzo Bettini http://www.lorenzobettini.it http://www.gnu.org/software/src-highlite --> <pre><tt><span style="font-weight: bold"><span style="color: #000000">start_clear</span></span>(<span style="color: #009900">Name</span> <span style="color: #990000">::</span> <span style="font-weight: bold"><span style="color: #000000">ranch:ref</span></span>(), <span style="color: #009900">TransportOpts</span> <span style="color: #990000">::</span> <span style="font-weight: bold"><span style="color: #000000">ranch_tcp:opts</span></span>(), <span style="color: #009900">ProtocolOpts</span> <span style="color: #990000">::</span> <span style="font-weight: bold"><span style="color: #000000">opts</span></span>()) <span style="color: #990000">-></span> {<span style="color: #FF6600">ok</span>, <span style="color: #009900">ListenerPid</span> <span style="color: #990000">::</span> <span style="font-weight: bold"><span style="color: #000080">pid</span></span>()} | {<span style="color: #FF6600">error</span>, <span style="font-weight: bold"><span style="color: #000000">any</span></span>()}</tt></pre></div></div> <div class="paragraph"><p>Start listening for connections over a clear TCP channel.</p></div> <div class="paragraph"><p>Both HTTP/1.1 and HTTP/2 are supported on this listener. HTTP/2 has two methods of establishing a connection over a clear TCP channel. Both the upgrade and the prior knowledge methods are supported.</p></div> </div> </div> <div class="sect1"> <h2 id="_arguments">Arguments</h2> <div class="sectionbody"> <div class="dlist"><dl> <dt class="hdlist1"> Name </dt> <dd> <p> The listener name is used to refer to this listener in future calls, for example when stopping it or when updating the routes defined. </p> <div class="paragraph"><p>It can be any Erlang term. An atom is generally good enough, for example <code>api</code>, <code>my_app_clear</code> or <code>my_app_tls</code>.</p></div> </dd> <dt class="hdlist1"> TransportOpts </dt> <dd> <p> The transport options are where the TCP options, including the listener’s port number, are defined. Transport options are provided as a list of keys and values, for example <code>[{port, 8080}]</code>. </p> <div class="paragraph"><p>The available options are documented in the <a href="../ranch_tcp">ranch_tcp(3)</a> manual.</p></div> </dd> <dt class="hdlist1"> ProtocolOpts </dt> <dd> <p> The protocol options are in a map containing all the options for the different protocols that may be involved when connecting to the listener, including HTTP/1.1 and HTTP/2. </p> <div class="paragraph"><p>The HTTP/1.1 options are documented in the <a href="../cowboy_http">cowboy_http(3)</a> manual; and the HTTP/2 options in <a href="../cowboy_http2">cowboy_http2(3)</a>.</p></div> </dd> </dl></div> </div> </div> <div class="sect1"> <h2 id="_return_value">Return value</h2> <div class="sectionbody"> <div class="paragraph"><p>An ok tuple is returned on success. It contains the pid of the top-level supervisor for the listener.</p></div> <div class="paragraph"><p>An error tuple is returned on error. The error reason may be any Erlang term.</p></div> <div class="paragraph"><p>A common error is <code>eaddrinuse</code>. It indicates that the port configured for Cowboy is already in use.</p></div> </div> </div> <div class="sect1"> <h2 id="_changelog">Changelog</h2> <div class="sectionbody"> <div class="ulist"><ul> <li> <p> <strong>2.0</strong>: HTTP/2 support added. </p> </li> <li> <p> <strong>2.0</strong>: Function introduced. Replaces <code>cowboy:start_http/4</code>. </p> </li> </ul></div> </div> </div> <div class="sect1"> <h2 id="_examples">Examples</h2> <div class="sectionbody"> <div class="listingblock"> <div class="title">Start a listener</div> <div class="content"><!-- Generator: GNU source-highlight 3.1.8 by Lorenzo Bettini http://www.lorenzobettini.it http://www.gnu.org/software/src-highlite --> <pre><tt><span style="color: #009900">Dispatch</span> <span style="color: #990000">=</span> <span style="font-weight: bold"><span style="color: #000000">cowboy_router:compile</span></span>([ {<span style="color: #FF6600">'_'</span>, [ {<span style="color: #FF0000">"/"</span>, <span style="color: #FF6600">toppage_h</span>, []} ]} ]), {<span style="color: #FF6600">ok</span>, <span style="color: #990000">_</span>} <span style="color: #990000">=</span> <span style="font-weight: bold"><span style="color: #000000">cowboy:start_clear</span></span>(<span style="color: #FF6600">example</span>, [{<span style="color: #FF6600">port</span>, <span style="color: #993399">8080</span>}], #{ <span style="color: #0000FF">env</span> <span style="color: #990000">=></span> #{<span style="color: #0000FF">dispatch</span> <span style="color: #990000">=></span> <span style="color: #009900">Dispatch</span>} })<span style="color: #990000">.</span></tt></pre></div></div> <div class="listingblock"> <div class="title">Start a listener on a random port</div> <div class="content"><!-- Generator: GNU source-highlight 3.1.8 by Lorenzo Bettini http://www.lorenzobettini.it http://www.gnu.org/software/src-highlite --> <pre><tt><span style="color: #009900">Name</span> <span style="color: #990000">=</span> <span style="color: #FF6600">example</span>, {<span style="color: #FF6600">ok</span>, <span style="color: #990000">_</span>} <span style="color: #990000">=</span> <span style="font-weight: bold"><span style="color: #000000">cowboy:start_clear</span></span>(<span style="color: #009900">Name</span>, [], #{ <span style="color: #0000FF">env</span> <span style="color: #990000">=></span> #{<span style="color: #0000FF">dispatch</span> <span style="color: #990000">=></span> <span style="color: #009900">Dispatch</span>} }), <span style="color: #009900">Port</span> <span style="color: #990000">=</span> <span style="font-weight: bold"><span style="color: #000000">ranch:get_port</span></span>(<span style="color: #009900">Name</span>)<span style="color: #990000">.</span></tt></pre></div></div> </div> </div> <div class="sect1"> <h2 id="_see_also">See also</h2> <div class="sectionbody"> <div class="paragraph"><p><a href="../cowboy">cowboy(3)</a>, <a href="../cowboy.start_tls">cowboy:start_tls(3)</a>, <a href="../cowboy.stop_listener">cowboy:stop_listener(3)</a>, <a href="../ranch">ranch(3)</a></p></div> </div> </div> </div> <div class="span3 sidecol"> <h3> Cowboy 2.1 Function Reference </h3> <ul> <li><a href="/docs/en/cowboy/2.1/guide">User Guide</a></li> <li><a href="/docs/en/cowboy/2.1/manual">Function Reference</a></li> </ul> <h4 id="docs-nav">Navigation</h4> <h4>Version select</h4> <ul> <li><a href="/docs/en/cowboy/2.2/manual">2.2</a></li> <li><a href="/docs/en/cowboy/2.1/manual">2.1</a></li> <li><a href="/docs/en/cowboy/2.0/manual">2.0</a></li> <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li> </ul> </div> </div> </div> </div> <footer> <div class="container"> <div class="row"> <div class="span6"> <p id="scroll-top"><a href="#">↑ Scroll to top</a></p> <nav> <ul> <li><a href="mailto:contact@ninenines.eu" title="Contact us">Contact us</a></li><li><a href="https://github.com/ninenines/ninenines.github.io" title="Github repository">Contribute to this site</a></li> </ul> </nav> </div> <div class="span6 credits"> <p><img src="/img/footer_logo.png"></p> <p>Copyright © Loïc Hoguin 2012-2016</p> </div> </div> </div> </footer> <script src="/js/custom.js"></script> </body> </html>