angular - 在 Angular 中调用 API 后初始化套接字时 Websocket 不工作

标签 angular sockets 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 发出数据时,我都会在这里收到它。

但现在我改变了逻辑,只有当用户被验证时才初始化套接字。这是我的新代码:

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/

相关文章:

css - 带有父级子行的Angular Material垫表的备用颜色

angular - 属性 'of' 在类型 'typeof Observable 上不存在

ios - Websockets 可以在手机上运行吗?

node.js - 将临时端口与 socket.io 服务器一起使用

javascript - Angular 2 : Why do I have to import a Service in a child component if it is already included in the app component?

angular - 使用 Router.navigate() 后未调用 Observable.subscribe()

java - Android套接字聊天连接错误

c# - TcpListener 与 SocketAsyncEventArgs

linux - 连接的 UDP 套接字的意外行为

java - 可以通过 WebSocket 传递的最大数据量是多少?