2017-10-14 163 views
2

我试图连接在镖的WebSocket:只要我叫connect()在角使用的WebSockets飞镖

@Injectable() 
class Sock { 

    ... 

    Future<WebSocket> connect() async { 
     return WebSocket.connect("ws://...."); 
    } 


} 

,我看到这似乎不相关的错误:

EXCEPTION: 'dart:io-patch/platform_patch.dart': error: line 25: native function 'Platform_GetVersion' (0 arguments) cannot be found 
    static String _version() native "Platform_GetVersion"; 
^

STACKTRACE: 
platform_impl.dart 110        _Platform.version 
platform.dart 73         Platform._version 
platform.dart 73         Platform._version 
platform.dart 229         Platform.version 
http_impl.dart 2843         _getHttpVersion 
http_impl.dart 1672         new _HttpClient 
http.dart 1338          new HttpClient 
websocket_impl.dart 968        _WebSocketImpl._httpClient 
websocket_impl.dart 968        _WebSocketImpl._httpClient 
websocket_impl.dart 994        _WebSocketImpl.connect 
websocket.dart 319         WebSocket.connect 
package:atomcomponents/util/sock.dart 44:20   Sock.connect 
package:atomcomponents/util/sock.dart 35:21   new Sock.<fn> 
dart:async           _ZoneDelegate.runUnary 
package:angular2/src/core/zone/ng_zone.dart 184:21 NgZone._runUnary 
dart:async           _ZoneDelegate.runUnary 
package:angular2/src/core/zone/ng_zone.dart 184:21 NgZone._runUnary 



VM276:1 EXCEPTION: NoSuchMethodError: The method 'openUrl' was called on null. 
Receiver: null 
Tried calling: openUrl("GET", Instance of '_Uri') 
STACKTRACE: 
dart:core           Object.noSuchMethod 
websocket_impl.dart 994        _WebSocketImpl.connect 
websocket.dart 319         WebSocket.connect 
package:atomcomponents/util/sock.dart 44:20   Sock.connect 
package:atomcomponents/util/sock.dart 32:21   new Sock.<fn> 
dart:async           _ZoneDelegate.runUnary 
package:angular2/src/core/zone/ng_zone.dart 184:21 NgZone._runUnary 
dart:async           _ZoneDelegate.runUnary 
package:angular2/src/core/zone/ng_zone.dart 184:21 NgZone._runUnary 

有人建议我加BrowserClient到bootstrap

// bootstrap angular2 
bootstrap(AppComponent, [ 
    ROUTER_PROVIDERS, 
    provide(APP_BASE_HREF, useValue: '/'), 
    provide(LocationStrategy, useClass: HashLocationStrategy), 
    provide(BrowserClient, useFactory:() => new BrowserClient(), deps: []) 
]); 

但是,这是不作出任何d ifference,WebSocket.connect仍然失败,同一个巨大的堆栈跟踪。

在旧代码中,new WebSocket("ws://...");用于工作,但WebSocket现在是一个抽象类,并且该构造函数已被弃用。

@Deprecated('This constructor will be removed in Dart 2.0. Use `implements`' 
     ' instead of `extends` if implementing this abstract class.') 
    WebSocket(); 

文档字面上只提到它: https://webdev.dartlang.org/angular/guide/server-communication

WebSocket协议是另一个重要的通信技术; 它不包括在此页面中。

我在Angular 3.1.0Dart 1.24.2

能的WebSockets与角度使用,如果是的话,缺什么,使其工作?

回答

1

嗯,似乎我出于某种原因使用了Sockets的后端实现,从dart:io更改了我的导入,现在它正在工作。

import 'dart:html'; 

而这个连接:

new WebSocket("ws://...");