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

Side by Side Diff: dart/samples/dartiverse_search/web/client.dart

Issue 68633002: Version 1.0.0.2 (Closed) Base URL: http://dart.googlecode.com/svn/trunk/
Patch Set: Created 7 years, 1 month 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 | « dart/samples/dartiverse_search/bin/server.dart ('k') | dart/tools/VERSION » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 import 'dart:async'; 5 import 'dart:async';
6 import 'dart:convert'; 6 import 'dart:convert';
7 import 'dart:html'; 7 import 'dart:html';
8 8
9 9
10 class Client { 10 class Client {
11 static const Duration RECONNECT_DELAY = const Duration(milliseconds: 500); 11 static const Duration RECONNECT_DELAY = const Duration(milliseconds: 500);
12 12
13 bool connectPending = false;
13 WebSocket webSocket; 14 WebSocket webSocket;
14 final DivElement log = new DivElement(); 15 final DivElement log = new DivElement();
15 SearchInputElement searchElement = querySelector('#q'); 16 SearchInputElement searchElement = querySelector('#q');
16 DivElement statusElement = querySelector('#status'); 17 DivElement statusElement = querySelector('#status');
17 DivElement resultsElement = querySelector('#results'); 18 DivElement resultsElement = querySelector('#results');
18 19
19 Client() { 20 Client() {
20 searchElement.onChange.listen((e) { 21 searchElement.onChange.listen((e) {
21 search(searchElement.value); 22 search(searchElement.value);
22 searchElement.value = ''; 23 searchElement.value = '';
23 }); 24 });
24 connect(); 25 connect();
25 } 26 }
26 27
27 void connect() { 28 void connect() {
29 connectPending = false;
28 webSocket = new WebSocket('ws://${Uri.base.host}:${Uri.base.port}/ws'); 30 webSocket = new WebSocket('ws://${Uri.base.host}:${Uri.base.port}/ws');
29 webSocket.onOpen.first.then((_) { 31 webSocket.onOpen.first.then((_) {
30 onConnected(); 32 onConnected();
31 webSocket.onClose.first.then((_) { 33 webSocket.onClose.first.then((_) {
32 print("Connection disconnected to ${webSocket.url}"); 34 print("Connection disconnected to ${webSocket.url}");
33 onDisconnected(); 35 onDisconnected();
34 }); 36 });
35 }); 37 });
36 webSocket.onError.first.then((_) { 38 webSocket.onError.first.then((_) {
37 print("Failed to connect to ${webSocket.url}. " 39 print("Failed to connect to ${webSocket.url}. "
38 "Please run bin/server.dart and try again."); 40 "Please run bin/server.dart and try again.");
39 onDisconnected(); 41 onDisconnected();
40 }); 42 });
41 } 43 }
42 44
43 void onConnected() { 45 void onConnected() {
44 setStatus(''); 46 setStatus('');
45 searchElement.disabled = false; 47 searchElement.disabled = false;
46 searchElement.focus(); 48 searchElement.focus();
47 webSocket.onMessage.listen((e) { 49 webSocket.onMessage.listen((e) {
48 onMessage(e.data); 50 onMessage(e.data);
49 }); 51 });
50 } 52 }
51 53
52 void onDisconnected() { 54 void onDisconnected() {
55 if (connectPending) return;
56 connectPending = true;
57 setStatus('Disconnected - start \'bin/server.dart\' to continue');
53 searchElement.disabled = true; 58 searchElement.disabled = true;
54 setStatus('Disconnected - start \'bin/server.dart\' to continue');
55 new Timer(RECONNECT_DELAY, connect); 59 new Timer(RECONNECT_DELAY, connect);
56 } 60 }
57 61
58 void setStatus(String status) { 62 void setStatus(String status) {
59 statusElement.innerHtml = status; 63 statusElement.innerHtml = status;
60 } 64 }
61 65
62 66
63 void onMessage(data) { 67 void onMessage(data) {
64 var json = JSON.decode(data); 68 var json = JSON.decode(data);
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
97 'input': input 101 'input': input
98 }; 102 };
99 webSocket.send(JSON.encode(request)); 103 webSocket.send(JSON.encode(request));
100 } 104 }
101 } 105 }
102 106
103 107
104 void main() { 108 void main() {
105 var client = new Client(); 109 var client = new Client();
106 } 110 }
OLDNEW
« no previous file with comments | « dart/samples/dartiverse_search/bin/server.dart ('k') | dart/tools/VERSION » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698