Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(15)

Side by Side Diff: chrome/common/extensions/docs/server2/templates/articles/app_network.html

Issue 10908045: Added intro to socket API reference docs. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | chrome/common/extensions/docs/server2/templates/intros/socket.html » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 <h1>Network Communications</h1> 1 <h1>Network Communications</h1>
2 2
3
4 <p> 3 <p>
5 Packaged apps can act as a network client 4 Packaged apps can act as a network client
6 for TCP and UDP connections. 5 for TCP and UDP connections.
7 This doc shows you how to use TCP and UDP 6 This doc shows you how to use TCP and UDP
8 to send and receive data over the network. 7 to send and receive data over the network.
9 For more information, 8 For more information,
10 see the 9 see the
11 <a href="experimental.socket.html">Sockets API</a>. 10 <a href="socket.html">Sockets API</a>.
12 </p> 11 </p>
13 12
14 <p class="note"> 13 <p class="note">
15 <b>API Samples: </b> 14 <b>API Samples: </b>
16 Want to play with the code? 15 Want to play with the code?
17 Check out the 16 Check out the
18 <a href="https://github.com/GoogleChrome/chrome-app-samples/tree/master/telnet"> telnet</a> 17 <a href="https://github.com/GoogleChrome/chrome-app-samples/tree/master/telnet"> telnet</a>
19 and <a href="https://github.com/GoogleChrome/chrome-app-samples/tree/master/udp" >udp</a> samples. 18 and <a href="https://github.com/GoogleChrome/chrome-app-samples/tree/master/udp" >udp</a> samples.
20 </p> 19 </p>
21 20
22 <h2 id="manifest">Manifest requirements</h2> 21 <h2 id="manifest">Manifest requirements</h2>
23 22
24 <p> 23 <p>
25 For packaged apps that use TCP or UDP, 24 For packaged apps that use TCP or UDP,
26 add the "experimental" and "socket" permissions 25 add the "socket" permission to the manifest
27 to the manifest: 26 and specify the IP end point permission rules.
27 For example:
28 </p> 28 </p>
29 29
30 <pre> 30 <pre>
31 "permissions": [ 31 "permissions": [
32 "experimental", 32 {"socket": [
33 "socket" 33 "rule1",
34 ] 34 "rule2",
35 ...
36 ]}
37 ]
35 </pre> 38 </pre>
36 39
40 <p>
41 The syntax of socket permission rules follows these patterns:
42 </p>
43
44 <pre>
45 &lt;socket-permission-rule>
46 := &lt;op> | &lt;op> ':' &lt;host> | &lt;op> ':' ':' &lt;port> |
47 &lt;op> ':' &lt;host> ':' &lt;port>
48 &lt;op> := 'tcp-connect' | 'tcp-listen' | 'udp-bind' | 'udp-send-to'
49 &lt;host> := '*' | '*.' &lt;anychar except '/' and '*'>+
50 &lt;port> := '*' | &lt;port number between 1 and 65535>)
51 </pre>
52
53 <p>
54 Examples of socket permission rules:
55 </p>
56
57 <ul>
58 <li>"tcp-connect:*:23" &ndash; For connecting port 23 of any hosts</li>
miket_OOO 2012/08/31 22:33:59 connecting to (or maybe on)
mkearney1 2012/08/31 23:32:12 Done.
59 <li>"tcp-connect:www.example.com:23" &ndash;
60 For connecting port 23 of <em>www.example.com</em></li>
miket_OOO 2012/08/31 22:33:59 Overall I'd eliminate the "for" from each of these
mkearney1 2012/08/31 23:32:12 Done.
61 <li>"tcp-connect" &ndash; For connecting any ports of any hosts</li>
62 <li>"udp-send-to::99" &ndash; For sending UDP package to port 99 of any hosts< /li>
miket_OOO 2012/08/31 22:33:59 packet, not package, and I'd say "sending UDP pack
mkearney1 2012/08/31 23:32:12 Done.
63 <li>"udp-bind::8899" &ndash; For binding local port 8899 to receive UDP packag e</li>
64 <li>"tcp-listen::8080" &ndash; For tcp listening on local port 8080</li>
miket_OOO 2012/08/31 22:33:59 TCP
mkearney1 2012/08/31 23:32:12 Done.
65 </ul>
66
37 <h2 id="tcp">Using TCP</h2> 67 <h2 id="tcp">Using TCP</h2>
38 68
39 <p> 69 <p>
40 Packaged apps can make connections to any service that supports TCP. 70 Packaged apps can make connections to any service that supports TCP.
41 </p> 71 </p>
42 72
43 <h3>Connecting to a socket</h3> 73 <h3>Connecting to a socket</h3>
44 74
45 <p> 75 <p>
46 Here's a sample showing how to connect to a socket: 76 Here's a sample showing how to connect to a socket:
47 </p> 77 </p>
48 78
49 <pre> 79 <pre>
50 chrome.socket.create('tcp', {}, function(createInfo) { 80 chrome.socket.create('tcp', {}, function(createInfo) {
51 socket.connect(createInfo.socketId, IP, PORT, onConnectedCallback); 81 socket.connect(createInfo.socketId, IP, PORT, onConnectedCallback);
52 }); 82 });
53 </pre> 83 </pre>
54 84
55 <p> 85 <p>
56 Keep a handle to the socketId so that 86 Keep a handle to the socketId so that
57 you can later read and write to this socket. 87 you can later read and write to this socket.
58 </p> 88 </p>
59 89
60 <pre> 90 <pre>
61 chrome.socket.write(socketId, arrayBuffer, onWriteCompleteCallback); 91 chrome.socket.write(socketId, arrayBuffer, onWriteCompleteCallback);
62 </pre> 92 </pre>
63 93
64 <h3>Reading to and writing from a socket</h3> 94 <h3>Reading to & writing from a socket</h3>
65 95
66 <p> 96 <p>
67 Reading and writing from a socket uses ArrayBuffer objects. 97 Reading and writing from a socket uses ArrayBuffer objects.
68 </p> 98 </p>
69 99
70 <pre> 100 <pre>
71 chrome.socket.read(socketId, null, function(readInfo) { 101 chrome.socket.read(socketId, null, function(readInfo) {
72 if (readInfo.resultCode > 0) { 102 if (readInfo.resultCode > 0) {
73 // readInfo.data is an arrayBuffer. 103 // readInfo.data is an arrayBuffer.
74 } 104 }
(...skipping 14 matching lines...) Expand all
89 119
90 <h3>Sending data</h3> 120 <h3>Sending data</h3>
91 121
92 <p> 122 <p>
93 Here's a sample showing how to send data 123 Here's a sample showing how to send data
94 over the network using UDP: 124 over the network using UDP:
95 </p> 125 </p>
96 126
97 <pre> 127 <pre>
98 // Create the Socket 128 // Create the Socket
99 chrome.experimental.socket.create('udp', '127.0.0.1', 1337, {}, 129 chrome.socket.create('udp', '127.0.0.1', 1337, {},
100 function(socketInfo) { 130 function(socketInfo) {
101 // The socket is created, now we want to connect to the service 131 // The socket is created, now we want to connect to the service
102 var socketId = socketInfo.socketId; 132 var socketId = socketInfo.socketId;
103 chrome.experimental.socket.connect(socketId, function(result) { 133 chrome.socket.connect(socketId, function(result) {
104 // We are now connected to the socket so send it some data 134 // We are now connected to the socket so send it some data
105 chrome.experimental.socket.write(socketId, arrayBuffer, 135 chrome.socket.write(socketId, arrayBuffer,
106 function(sendInfo) { 136 function(sendInfo) {
107 console.log("wrote " + sendInfo.bytesWritten); 137 console.log("wrote " + sendInfo.bytesWritten);
108 } 138 }
109 ); 139 );
110 }); 140 });
111 } 141 }
112 ); 142 );
113 </pre> 143 </pre>
114 144
115 <h3>Receiving data</h3> 145 <h3>Receiving data</h3>
116 146
117 <p> 147 <p>
118 This example is very similar to the 'Sending data' example 148 This example is very similar to the 'Sending data' example
119 with the addition of a special handler in the 'create' method. 149 with the addition of a special handler in the 'create' method.
120 The parameter is an object with one value 'onEvent' 150 The parameter is an object with one value 'onEvent'
121 that is a function reference to the method 151 that is a function reference to the method
122 that will be called when data is available on the port. 152 that will be called when data is available on the port.
123 </p> 153 </p>
124 154
125 <pre> 155 <pre>
126 // Handle the data response 156 // Handle the data response
127 var handleDataEvent = function(d) { 157 var handleDataEvent = function(d) {
128 var data = chrome.experimental.socket.read(d.socketId); 158 var data = chrome.socket.read(d.socketId);
129 console.log(data); 159 console.log(data);
130 }; 160 };
131 161
132 // Create the Socket 162 // Create the Socket
133 chrome.experimental.socket.create('udp', '127.0.0.1', 1337, { onEvent: handleDat aEvent }, 163 chrome.socket.create('udp', '127.0.0.1', 1337, { onEvent: handleDataEvent },
134 function(socketInfo) { 164 function(socketInfo) {
135 // The socket is created, now we want to connect to the service 165 // The socket is created, now we want to connect to the service
136 var socketId = socketInfo.socketId; 166 var socketId = socketInfo.socketId;
137 chrome.experimental.socket.connect(socketId, function(result) { 167 chrome.socket.connect(socketId, function(result) {
138 // We are now connected to the socket so send it some data 168 // We are now connected to the socket so send it some data
139 chrome.experimental.socket.write(socketId, arrayBuffer, 169 chrome.socket.write(socketId, arrayBuffer,
140 function(sendInfo) { 170 function(sendInfo) {
141 console.log("wrote " + sendInfo.bytesWritten); 171 console.log("wrote " + sendInfo.bytesWritten);
142 } 172 }
143 ); 173 );
144 }); 174 });
145 } 175 }
146 ); 176 );
147 </pre> 177 </pre>
148 178
149 <p class="backtotop"><a href="#top">Back to top</a></p> 179 <p class="backtotop"><a href="#top">Back to top</a></p>
OLDNEW
« no previous file with comments | « no previous file | chrome/common/extensions/docs/server2/templates/intros/socket.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698