| OLD | NEW | 
|---|
| 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'; | 
|  | 6 import 'dart:convert'; | 
| 5 import 'dart:html'; | 7 import 'dart:html'; | 
| 6 import 'dart:convert'; |  | 
| 7 | 8 | 
| 8 | 9 | 
| 9 class Client { | 10 class Client { | 
| 10   static const Duration CONNECT_DELAY = const Duration(milliseconds: 500); | 11   static const Duration RECONNECT_DELAY = const Duration(milliseconds: 500); | 
| 11 | 12 | 
| 12   WebSocket webSocket; | 13   WebSocket webSocket; | 
| 13   final DivElement log = new DivElement(); | 14   final DivElement log = new DivElement(); | 
| 14   SearchInputElement searchElement = querySelector('#q'); | 15   SearchInputElement searchElement = querySelector('#q'); | 
| 15   DivElement statusElement = querySelector('#status'); | 16   DivElement statusElement = querySelector('#status'); | 
| 16   DivElement resultsElement = querySelector('#results'); | 17   DivElement resultsElement = querySelector('#results'); | 
| 17 | 18 | 
| 18   Client() { | 19   Client() { | 
| 19     onDisconnected(); |  | 
| 20     searchElement.onChange.listen((e) { | 20     searchElement.onChange.listen((e) { | 
| 21       search(searchElement.value); | 21       search(searchElement.value); | 
| 22       searchElement.value = ''; | 22       searchElement.value = ''; | 
| 23     }); | 23     }); | 
|  | 24     connect(); | 
| 24   } | 25   } | 
| 25 | 26 | 
| 26   void onConnected() { | 27   void connect() { | 
| 27     setStatus(''); |  | 
| 28     searchElement.disabled = false; |  | 
| 29     searchElement.focus(); |  | 
| 30     webSocket.onMessage.listen((e) { |  | 
| 31       onMessage(e.data); |  | 
| 32     }); |  | 
| 33   } |  | 
| 34 |  | 
| 35   void onDisconnected() { |  | 
| 36     searchElement.disabled = true; |  | 
| 37     setStatus('Disconnected'); |  | 
| 38     webSocket = new WebSocket('ws://${Uri.base.host}:${Uri.base.port}/ws'); | 28     webSocket = new WebSocket('ws://${Uri.base.host}:${Uri.base.port}/ws'); | 
| 39     webSocket.onOpen.first.then((_) { | 29     webSocket.onOpen.first.then((_) { | 
| 40       onConnected(); | 30       onConnected(); | 
| 41       webSocket.onClose.first.then((_) { | 31       webSocket.onClose.first.then((_) { | 
| 42         print("Connection disconnected to ${webSocket.url}"); | 32         print("Connection disconnected to ${webSocket.url}"); | 
| 43         onDisconnected(); | 33         onDisconnected(); | 
| 44       }); | 34       }); | 
| 45     }); | 35     }); | 
| 46     webSocket.onError.first.then((_) { | 36     webSocket.onError.first.then((_) { | 
| 47       print("Failed to connect to ${webSocket.url}"); | 37       print("Failed to connect to ${webSocket.url}. " | 
|  | 38             "Please run bin/server.dart and try again."); | 
| 48       onDisconnected(); | 39       onDisconnected(); | 
| 49     }); | 40     }); | 
| 50   } | 41   } | 
| 51 | 42 | 
|  | 43   void onConnected() { | 
|  | 44     setStatus(''); | 
|  | 45     searchElement.disabled = false; | 
|  | 46     searchElement.focus(); | 
|  | 47     webSocket.onMessage.listen((e) { | 
|  | 48       onMessage(e.data); | 
|  | 49     }); | 
|  | 50   } | 
|  | 51 | 
|  | 52   void onDisconnected() { | 
|  | 53     searchElement.disabled = true; | 
|  | 54     setStatus('Disconnected - start \'bin/server.dart\' to continue'); | 
|  | 55     new Timer(RECONNECT_DELAY, connect); | 
|  | 56   } | 
|  | 57 | 
| 52   void setStatus(String status) { | 58   void setStatus(String status) { | 
| 53     statusElement.innerHtml = status; | 59     statusElement.innerHtml = status; | 
| 54   } | 60   } | 
| 55 | 61 | 
| 56 | 62 | 
| 57   void onMessage(data) { | 63   void onMessage(data) { | 
| 58     var json = JSON.decode(data); | 64     var json = JSON.decode(data); | 
| 59     var response = json['response']; | 65     var response = json['response']; | 
| 60     switch (response) { | 66     switch (response) { | 
| 61       case 'searchResult': | 67       case 'searchResult': | 
| (...skipping 29 matching lines...) Expand all  Loading... | 
| 91       'input': input | 97       'input': input | 
| 92     }; | 98     }; | 
| 93     webSocket.send(JSON.encode(request)); | 99     webSocket.send(JSON.encode(request)); | 
| 94   } | 100   } | 
| 95 } | 101 } | 
| 96 | 102 | 
| 97 | 103 | 
| 98 void main() { | 104 void main() { | 
| 99   var client = new Client(); | 105   var client = new Client(); | 
| 100 } | 106 } | 
| OLD | NEW | 
|---|