diff --git a/.gitignore b/.gitignore index 27106d2..7c81d88 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,6 @@ .project -packages +.packages +.pub +packages +pubspec.lock \ No newline at end of file diff --git a/lib/sockjs_client.dart b/lib/sockjs_client.dart index 6298b20..b9d6c5c 100644 --- a/lib/sockjs_client.dart +++ b/lib/sockjs_client.dart @@ -1,6 +1,6 @@ library sockjs_client; -import "dart:html"; +import "dart:html" as html; import "dart:convert"; import "dart:async"; import "dart:js"; diff --git a/lib/src/ajax.dart b/lib/src/ajax.dart index 4ca9843..fd15c63 100644 --- a/lib/src/ajax.dart +++ b/lib/src/ajax.dart @@ -10,7 +10,7 @@ typedef AbstractXHRObject AjaxObjectFactory(String method, String baseUrl, [payl class AbstractXHRObject extends Object with event.Emitter { - HttpRequest xhr; + html.HttpRequest xhr; StreamSubscription changeSubscription; Stream get onChunk => this["chunk"]; @@ -20,7 +20,7 @@ class AbstractXHRObject extends Object with event.Emitter { _start(method, url, payload, {noCredentials: false, headers}) { try { - xhr = new HttpRequest(); + xhr = new html.HttpRequest(); } catch(x) {}; if ( xhr == null ) { @@ -61,7 +61,7 @@ class AbstractXHRObject extends Object with event.Emitter { xhr.send(payload); } - _readyStateHandler(Event evt) { + _readyStateHandler(html.Event evt) { switch (xhr.readyState) { case 3: var text, status; diff --git a/lib/src/client.dart b/lib/src/client.dart index 43b0c9a..a7fe41b 100644 --- a/lib/src/client.dart +++ b/lib/src/client.dart @@ -70,6 +70,22 @@ class Client extends Object with event.Emitter { Stream get onClose => this["close"]; Stream get onHeartbeat => this["heartbeat"]; + void close([int code, String reason]) { + if (_transport != null) { + if (_transport is WebSocketTransport) { + _transport.doClose(code, reason); + } else if (_transport is XhrStreamingTransport) { + if (code == null) { + code = 0; + } + if (reason == null) { + reason = ''; + } + _didClose(code, reason); + } + } + } + send(data) { if (readyState == CONNECTING) { throw 'INVALID_STATE_ERR'; @@ -199,11 +215,11 @@ class Client extends Object with event.Emitter { // the `head`? if (PROTOCOLS.containsKey(protocol) && PROTOCOLS[protocol].needBody && - ( (document.body == null) || (document.readyState != null && document.readyState != 'complete')) + ( (html.document.body == null) || (html.document.readyState != null && html.document.readyState != 'complete')) ) { _protocols.insert(0, protocol); this.protocol = 'waiting-for-load'; - document.onLoad.listen( (_) => _tryNextProtocol()); + html.document.onLoad.listen( (_) => _tryNextProtocol()); return true; } diff --git a/lib/src/info.dart b/lib/src/info.dart index 389d711..5c1db15 100644 --- a/lib/src/info.dart +++ b/lib/src/info.dart @@ -12,7 +12,7 @@ class Info { origins = json["origins"]; cookieNeeded = json["cookie_needed"]; entropy = json["entropy"]; - nullOrigin = (document.domain == null); + nullOrigin = (html.document.domain == null); } } @@ -84,8 +84,8 @@ class AjaxInfoReceiver extends InfoReceiver { class InfoReceiverIframe extends InfoReceiver { InfoReceiverIframe(base_url) : super._() { - if(document.body == null) { - document.onLoad.listen((_) => go()); + if(html.document.body == null) { + html.document.onLoad.listen((_) => go()); } else { go(); } diff --git a/lib/src/transport/sender.dart b/lib/src/transport/sender.dart index 2b4b771..e014c1b 100644 --- a/lib/src/transport/sender.dart +++ b/lib/src/transport/sender.dart @@ -66,18 +66,18 @@ class BufferedSender { // postMessage communication */ class JsonPGenericSender { - FormElement _sendForm = null; - TextAreaElement _sendArea = null; + html.FormElement _sendForm = null; + html.TextAreaElement _sendArea = null; var completed; JsonPGenericSender(url, payload, callback) { - FormElement form; - TextAreaElement area; + html.FormElement form; + html.TextAreaElement area; if (_sendForm == null) { - form = _sendForm = new Element.tag('form'); - area = _sendArea = new Element.tag('textarea'); + form = _sendForm = new html.Element.tag('form'); + area = _sendArea = new html.Element.tag('textarea'); area.name = 'd'; form.style.display = 'none'; form.style.position = 'absolute'; @@ -93,12 +93,12 @@ class JsonPGenericSender { form.target = id; form.action = '$url/jsonp_send?i=$id'; - IFrameElement iframe; + html.IFrameElement iframe; try { // ie6 dynamic iframes with target="" support (thanks Chris Lambacher) - iframe = new Element.html('