Skip to content

Commit 9992b7f

Browse files
lelejackojumperchen
authored andcommitted
updates for web wasm support (fix for #392 and #404)
1 parent 1974333 commit 9992b7f

File tree

7 files changed

+15
-14
lines changed

7 files changed

+15
-14
lines changed

analysis_options.yaml

-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ analyzer:
77
# Lint rules and documentation, see http://dart-lang.github.io/linter/lints
88
linter:
99
rules:
10-
unsafe_html: false
1110
cancel_subscriptions: true
1211
close_sinks: true
1312
hash_and_equals: true

lib/src/engine/socket.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import 'transport.dart';
1515
// ignore: uri_does_not_exist
1616
import './transport/transports_stub.dart'
1717
// ignore: uri_does_not_exist
18-
if (dart.library.html) './transport/transports.dart'
18+
if (dart.library.js_interop) './transport/transports.dart'
1919
// ignore: uri_does_not_exist
2020
if (dart.library.io) './transport/io_transports.dart';
2121

lib/src/engine/transport/polling_transport.dart

+9-8
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@
1010
//
1111
// Copyright (C) 2017 Potix Corporation. All Rights Reserved.
1212
import 'dart:async';
13-
import 'dart:html';
13+
import 'dart:js_interop';
14+
import 'package:web/web.dart';
1415

1516
import 'package:logging/logging.dart';
1617
import 'package:socket_io_client/src/engine/transport.dart';
@@ -23,7 +24,7 @@ bool _hasXHR2() {
2324
try {
2425
// Dart's HttpRequest doesn't expose a direct way to check for XHR2 features,
2526
// but attempting to use features like setting `responseType` could serve as a proxy.
26-
final xhr = HttpRequest();
27+
final xhr = XMLHttpRequest();
2728
xhr.responseType =
2829
'arraybuffer'; // Attempting to set a responseType supported by XHR2
2930
return true;
@@ -280,9 +281,9 @@ class Request extends EventEmitter {
280281
late Map opts;
281282
late String method;
282283
late String uri;
283-
late dynamic data;
284+
late String? data;
284285

285-
HttpRequest? xhr;
286+
XMLHttpRequest? xhr;
286287
int? index;
287288
StreamSubscription? readyStateChange;
288289

@@ -311,12 +312,12 @@ class Request extends EventEmitter {
311312
};
312313
opts['xdomain'] = this.opts['xd'] ?? false;
313314

314-
var xhr = this.xhr = HttpRequest();
315+
var xhr = this.xhr = XMLHttpRequest();
315316
var self = this;
316317

317318
try {
318319
_logger.fine('xhr open $method: $uri');
319-
xhr.open(method, uri, async: true);
320+
xhr.open(method, uri, true);
320321

321322
try {
322323
if (this.opts.containsKey('extraHeaders') &&
@@ -371,7 +372,7 @@ class Request extends EventEmitter {
371372
});
372373

373374
_logger.fine('xhr data $data');
374-
xhr.send(data);
375+
xhr.send(data?.jsify());
375376
} catch (e) {
376377
// Need to defer since .create() is called directly fhrom the constructor
377378
// and thus the 'error' event can only be only bound *after* this exception
@@ -419,7 +420,7 @@ class Request extends EventEmitter {
419420
/// @api private
420421
void onLoad() {
421422
final data = xhr!.responseText;
422-
if (data != null) {
423+
if (data.isNotEmpty) {
423424
emitReserved('data', data);
424425
emitReserved('success');
425426
cleanup();

lib/src/engine/transport/websocket_transport.dart

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
// Author: jumperchen<[email protected]>
44

55
import 'dart:async';
6-
import 'dart:html';
6+
import 'package:web/web.dart';
77
import 'package:logging/logging.dart';
88
import 'package:socket_io_client/src/engine/transport.dart';
99
import 'package:socket_io_common/src/engine/parser/parser.dart';
@@ -35,7 +35,7 @@ class WebSocketTransport extends Transport {
3535
return emitReserved('error', err);
3636
}
3737

38-
if (ws!.binaryType == null) {
38+
if (ws?.binaryType == null) {
3939
supportsBinary = false;
4040
}
4141

pubspec.yaml

+1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ environment:
1111
dependencies:
1212
logging: '^1.2.0'
1313
socket_io_common: '^3.0.2'
14+
web: ^1.1.0
1415

1516
dev_dependencies:
1617
lints: ^4.0.0

test/io_client.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,5 +27,5 @@ void main() {
2727

2828
socket.on('event', (data) => print(data));
2929
socket.on('disconnect', (_) => print('disconnect'));
30-
socket.on('fromServer', (_) => print(_));
30+
socket.on('fromServer', (data) => print(data));
3131
}

web/main.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ void main() {
3737

3838
socket.on('event', (data) => print(data));
3939
socket.on('disconnect', (_) => print('disconnect'));
40-
socket.on('fromServer', (_) => print(_));
40+
socket.on('fromServer', (data) => print(data));
4141
}
4242

4343
class MyEncoder extends Encoder {

0 commit comments

Comments
 (0)