【发布时间】:2018-02-23 14:48:45
【问题描述】:
我需要在我的 Angular 2 项目中处理 websocket 连接
@Injectable()
export class WsManagerService<T> extends Subject<T> {
private socket: WebSocketSubject<any>;
constructor() {
super();
...
this.connect();
}
connect(): void {
this.socket = new WebSocketSubject(this.wsSubjectConfig);
this.socket.subscribe(
(m) => {
this.handleMessage(m);
this.next(m); /// when receiving a message, we just send it to Subject
},
(error: Event) => {
if (!this.socket) {
/// in case of an error with a loss of connection, we restore it
this.reconnect();
}
});
}
handleMessage(message: any): void {
if (this.isMessageConfiguration(message)) {
// STORE GLOBAL VARIABLE
} else if (this.isDateTime(message)) {
...
}
}
isMessageConfiguration(object: any): object is MessageConfiguration {
return 'rows' in object;
}
}
我需要将接收到的表示配置的消息存储在全局变量中,以便组件可以检索它。
我就是这样在一个组件中使用这个服务的
@Component({
selector: 'app-map-setup',
templateUrl: './map-setup.component.html',
styleUrls: ['./map-setup.component.css'],
providers: [WsManagerService]
})
export class MapSetupComponent {
constructor (wsManagerService: WsManagerService) {}
}
但我无法解决我遇到的“通用类型 WsManagerService 需要 1 个类型参数”错误
我哪里错了?
【问题讨论】:
-
检查我的答案应该可以解决您的编译问题。
标签: typescript rxjs angular2-services