1
我加载socket.io在我的应用程序,像这样:注入窗口对象到一个组件插入角度与DI
index.html
<script src="http://myapp.com/socket.io/socket.io.js"></script>
...
// Angular stuff
我有一个名为Socket
组件,它需要window.io
工作。
import { Injectable } from '@angular/core';
import { Events } from 'ionic-angular';
@Injectable()
export class Socket {
public isConnected: boolean = false;
constructor(public events: Events) {
if (typeof window.io === "undefined") {
throw new Error("Socket.io is undefined.");
}
this.io = window.io;
}
connect() {
this.io.connect("...");
}
listen() {
}
}
从理论上讲,它可能工作(没有测试),但它不是以将来自窗口范围的东西为类一个很好的做法。
有没有办法做到这一点是这样的:
import { SocketIODriver } from 'socket.io';
import { Socket } from 'App/Socket/Socket';
@Component({
templateUrl: 'layout.html'
})
export class ConferenceApp {
constructor(
public io: io,
public Socket: Socket
) {
this.socket = new Socket(new SocketIODriver());
}
}
谢谢。
Ps。 IIRC,socket.io必须从服务器加载,这就是为什么我从我的服务器加载它。如果它可以放在我的JS文件夹中,那会更好。