我正在尝试将 websockets
与 Angular 一起使用。
这是我的代码
ngOnInit(){
const self = this;
self.authService.init();
self.socket = self.authService.getSocket();
if(self.socket){
self.socket.on("new-message", (data) => {
console.log(data);
});
}
}
这工作得很好,每当用 new-message
发出数据时,我都会在这里收到它。
但现在我改变了逻辑,只有当用户被验证
时才初始化套接字。这是我的新代码:
ngOnInit(){
const self = this;
this.authService.isUserAuthenticatedbyType().then(function(isAuthenticated){
if(isAuthenticated){
self.authService.init();
self.socket = self.authService.getSocket();
if(self.socket){
self.socket.on("new-message", (data) => {
console.log(data);
});
}
});
}
此处,isUserAuthenticatedbyType
有一个 API 调用,它根据用户是否已通过身份验证
返回一个 bool 值 Promise。
现在,对于 authenticated
用户,我的套接字已正确初始化,即使发出消息后仍然没有收到消息。我不确定这两种方法之间出了什么问题。任何帮助将不胜感激。
最佳答案
不确定,这实际上是问题所在,但你错过了一个大括号:
ngOnInit(){
const self = this;
this.authService.isUserAuthenticatedbyType().then(function(isAuthenticated){
if(isAuthenticated){
self.authService.init();
self.socket = self.authService.getSocket();
if(self.socket){
self.socket.on("new-message", (data) => {
console.log(data);
});
} // this one ends if(self.socket)
}
});
}
关于angular - 在 Angular 中调用 API 后初始化套接字时 Websocket 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53362561/