angular - 当我在 Angular 中调用 API 后初始化套接字时,Websocket 不起作用
问题描述
我正在尝试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
,我都会在这里收到它。
但现在我改变了逻辑,只有当用户是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);
});
}
});
}
在这里,isUserAuthenticatedbyType
有一个 API 调用,它根据用户是否为authenticated
.
现在,在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)
}
});
}
推荐阅读
- javascript - 在存在 PDF iframe 的情况下选择文本后,文本输入开始向后键入
- python - 如何从 sklearn 转换(Imputer)中保留 DataFrame 中的数据类型
- reactjs - html2canvas 没有正确显示表单元素
- compression - 为什么 tar 归档占用 1MB?它不应该只占用1KB吗?
- javascript - Javascript - 如何从 MQTT 将变量值插入数据库
- reactjs - React Js 验证
- javascript - 为什么我的下拉手风琴不起作用?
- node.js - 如何创建一个可以由客户下载的应用程序,以便不使用我的服务器传输数据
- angular - 为什么将 Openlayers v5 添加到 Angular (6) 会使 SPA 下载更大?
- javascript - 如何使用 JavaScript 在用户指定的两个数字内生成可被 3 整除的所有数字