blob: e2e1aa202f05664ed35f942deb92e1e4c6471285 (
plain)
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
|
---
version: tip
layout: manpage_v2
title: nng_http_hijack(3http)
---
<h1>nng_http_hijack(3http)</h1>
<div class="sect1">
<h2 id="_name">NAME</h2>
<div class="sectionbody">
<div class="paragraph">
<p>nng_http_hijack - hijack HTTP server connection</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="listingblock">
<div class="content">
<pre class="pygments highlight"><code data-lang="c"><span></span><span class="tok-cp">#include</span><span class="tok-w"> </span><span class="tok-cpf"><nng/nng.h></span>
<span class="tok-cp">#include</span><span class="tok-w"> </span><span class="tok-cpf"><nng/supplemental/http/http.h></span>
<span class="tok-kt">void</span><span class="tok-w"> </span><span class="tok-nf">nng_http_hijack</span><span class="tok-p">(</span><span class="tok-n">nng_http_conn</span><span class="tok-w"> </span><span class="tok-o">*</span><span class="tok-n">conn</span><span class="tok-p">);</span></code></pre>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph">
<p>
The <code>nng_http_hijack()</code> function hijacks the connection <em>conn</em>, causing it
to be disassociated from the HTTP server where it was created.</p>
</div>
<div class="paragraph">
<p>The purpose of this function is the creation of HTTP upgraders (such as
WebSocket), where the underlying HTTP connection will be taken over for
some other purpose, and should not be used any further by the server.</p>
</div>
<div class="paragraph">
<p>This function is most useful when called from a handler function.
(See <a href="nng_http_handler_alloc.3http.html"><code>nng_http_handler_alloc()</code></a>.)</p>
</div>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<i class="fa icon-note" title="Note"></i>
</td>
<td class="content">
It is the responsibility of the caller to dispose of the underlying
connection when it is no longer needed.
Furthermore, the HTTP server will no longer send any responses to the
hijacked connection, so the caller should do that as well if appropriate.
(See <a href="nng_http_conn_write_res.3http.html"><code>nng_http_conn_write_res()</code></a>.)
</td>
</tr>
</table>
</div>
<div class="admonitionblock tip">
<table>
<tr>
<td class="icon">
<i class="fa icon-tip" title="Tip"></i>
</td>
<td class="content">
This function is intended to facilitate uses cases that involve changing
the protocol from HTTP, such as WebSocket.
Most applications will never need to use this function.
</td>
</tr>
</table>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_return_values">RETURN VALUES</h2>
<div class="sectionbody">
<div class="paragraph">
<p>None.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_errors">ERRORS</h2>
<div class="sectionbody">
<div class="hdlist">
<table>
<tr>
<td class="hdlist1">
<code>NNG_ECLOSED</code>
</td>
<td class="hdlist2">
<p>The connection was closed.</p>
</td>
</tr>
<tr>
<td class="hdlist1">
<code>NNG_ENOMEM</code>
</td>
<td class="hdlist2">
<p>Insufficient free memory exists.</p>
</td>
</tr>
<tr>
<td class="hdlist1">
<code>NNG_ENOTSUP</code>
</td>
<td class="hdlist2">
<p>HTTP not supported.</p>
</td>
</tr>
</table>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_see_also">SEE ALSO</h2>
<div class="sectionbody">
<div class="paragraph text-left">
<p><a href="nng_strerror.3.html">nng_strerror(3)</a>,
<a href="nng_http_conn_write_res.3http.html">nng_http_conn_write_res(3http)</a>,
<a href="nng_http_handler_alloc.3http.html">nng_http_handler_alloc(3http)</a>,
<a href="nng.7.html">nng(7)</a></p>
</div>
</div>
</div>
|