@@ -12,7 +12,7 @@ typedef void OnCloseCallback(int code, String reason);
1212typedef void OnOpenCallback ();
1313
1414class WebSocketImpl {
15- String _url;
15+ final String _url;
1616 WebSocket _socket;
1717 final logger = Log ();
1818 OnOpenCallback onOpen;
@@ -26,22 +26,20 @@ class WebSocketImpl {
2626 try {
2727 if (webSocketSettings.allowBadCertificate) {
2828 /// Allow self-signed certificate, for test only.
29- var parsed_url = Grammar .parse (_url, 'absoluteURI' );
30- _socket = await _connectForBadCertificate (parsed_url.scheme,
31- parsed_url.host, parsed_url.port, webSocketSettings);
29+ _socket = await _connectForBadCertificate (_url, webSocketSettings);
3230 } else {
3331 _socket = await WebSocket .connect (_url,
3432 protocols: protocols, headers: webSocketSettings.extraHeaders);
3533 }
3634
37- this ? . onOpen ();
35+ onOpen ? . call ();
3836 _socket.listen ((data) {
39- this ? . onMessage (data);
37+ onMessage ? . call (data);
4038 }, onDone: () {
41- this ? . onClose (_socket.closeCode, _socket.closeReason);
39+ onClose ? . call (_socket.closeCode, _socket.closeReason);
4240 });
4341 } catch (e) {
44- this . onClose (500 , e.toString ());
42+ onClose? . call (500 , e.toString ());
4543 }
4644 }
4745
@@ -61,8 +59,8 @@ class WebSocketImpl {
6159 }
6260
6361 /// For test only.
64- Future <WebSocket > _connectForBadCertificate (String scheme, String host,
65- int port , WebSocketSettings webSocketSettings) async {
62+ Future <WebSocket > _connectForBadCertificate (
63+ String url , WebSocketSettings webSocketSettings) async {
6664 try {
6765 var r = new Random ();
6866 var key = base64.encode (List <int >.generate (16 , (_) => r.nextInt (255 )));
@@ -79,9 +77,11 @@ class WebSocketImpl {
7977 return true ;
8078 };
8179
82- var request = await client.getUrl (Uri .parse (
83- (scheme == 'wss' ? 'https' : 'http' ) +
84- '://$host :$port ' )); // form the correct url here
80+ var parsed_uri = Uri .parse (url);
81+ var uri = parsed_uri.replace (
82+ scheme: parsed_uri.scheme == 'wss' ? 'https' : 'http' );
83+
84+ var request = await client.getUrl (uri); // form the correct url here
8585 request.headers.add ('Connection' , 'Upgrade' , preserveHeaderCase: true );
8686 request.headers.add ('Upgrade' , 'websocket' , preserveHeaderCase: true );
8787 request.headers.add ('Sec-WebSocket-Version' , '13' ,
0 commit comments