我正在使用Angular2开发一个小应用程序.在5分钟.快速入门指南 npm用于安装所需的模块并启动lite-server.后来我想在普通的网络服务器中使用该应用程序,并使用cordova构建移动应用程序.但是,我正在使用REST API来加载一些数据.如何配置lite-server来解决CORS pre-flight OPTIONS检查?我的apache服务器(在专用服务器上)已经配置好了,但是我不想提交,更新和重新编译每一个小小的改动.我需要一个相应的配置:
Header always set Access-Control-Allow-Origin "https://my-domain.net:12345"
Header always set Access-Control-Allow-Headers "X-Requested-With, Content-Type, Origin, Authorization, Accept, Client-Security-Token, Accept-Encoding"
Header always set Access-Control-Allow-Methods "POST, GET, OPTIONS, DELETE, PUT"
Header always set Access-Control-Max-Age "1000"
Run Code Online (Sandbox Code Playgroud) 如何使用angular2消耗"永无止境"的数据流?我正在写一个小聊天应用程序,其中一个服务器用go编写,一个客户端用angular2编写.对于推送服务,我实现了一个端点,可以保持连接.授权用户可以server.com:123/broker使用GET请求连接到消息代理.每当用户的新消息到达时,它就以json-object的形式发送给代理.然而,当使用normale语法时,我将不会得到任何结果(因为代码等待连接被关闭,因为我想):
return this._http.request(req).map( (res: Response) => {
return res.json();
}).subscrube( results => {
console.log("results arrived", results);
});
Run Code Online (Sandbox Code Playgroud)
消费流有很多优点(比如带有休息api的视频流,真棒).有没有办法做到这一点?
/编辑:这里有更多信息:我检查了http事务,看起来没问题:
GET /broker HTTP/1.1
User-Agent: curl/7.35.0
Host: mydomain.com:12345
Accept: */*
Authorization: Bearer [JWT]
Run Code Online (Sandbox Code Playgroud)
具有响应头的服务器ansers:
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Date: Mon, 01 Feb 2016 11:16:45 GMT
Transfer-Encoding: chunked
Run Code Online (Sandbox Code Playgroud)
[然后客户端正在侦听此连接,直到服务器将某些内容推送到流中
ba
{"target":"56addcef7bec6d5785ee6945","payload": ...}
Run Code Online (Sandbox Code Playgroud)
到目前为止似乎是正确的.我可以看到以十六进制(ba),CRLF,有效负载(json)和最终CRLF的块的大小.所以,在谈论HTTP标准时,一切似乎都没问题.但是,我的Angular2不会获取块.
我想编写某种广播机制来EventEmitter在我的用户上下文中动态创建和使用s.为此我注入了一个EmitterService
@Injectable()
export class BroadcastService implements OnInit {
private _emitters: { [channel: string]: EventEmitter<any> } = {};
constructor() {}
get(channel: string): EventEmitter<any> {
if (!this._emitters[channel]) {
this._emitters[channel] = new EventEmitter();
}
return this._emitters[channel];
}
ngOnInit() { }
}
Run Code Online (Sandbox Code Playgroud)
我的组件结构如下所示:
[root]
| |
[comp-a][comp-b]
Run Code Online (Sandbox Code Playgroud)
在我的root组件中,我注入BroadcastService以确保每个子组件使用相同的广播通道.此外,AuthService还注入了其他类似服务(root同样也是我的用户上下文)
@Component({
provider: [BroadcastService, AuthService]
})
Run Code Online (Sandbox Code Playgroud)
该AuthService(等)使用的是BroadcastService用于发出事件:
@Injectable()
export class AuthService extends BaseService {
constructor(
http: Http,
@Inject(BroadcastService) private emitterService: BroadcastService)
{ …Run Code Online (Sandbox Code Playgroud)