一尘不染

Angular Universal Server渲染WebSocket

node.js

有没有带WebSockets的Angular Universal示例?

服务器端渲染不知道在我的情况下是不是一个WebSocket对象。如果我使用socket.io,则尝试建立连接时节点服务器将挂起。

有关该问题的一些其他信息:

我从github下载了angular-universal-
starter:https//github.com/angular/universal-
starter, 它在运行’npm install’和’npm
start’时开箱即用

但是在我将以下代码添加到AppComponent之后

   export class AppComponent implements OnInit {
       ngOnInit() {
           let webSocket = new WebSocket("----server url----")
       }
   }

我的NodeJs服务器控制台出现以下错误:

EXCEPTION: WebSocket is not defined
ORIGINAL STACKTRACE:
ReferenceError: WebSocket is not defined
    at AppComponent.ngOnInit (/Volumes/Development/cacadu/website/universal-starter-master2/dist
/server/index.js:41725:29)

阅读 214

收藏
2020-07-07

共1个答案

一尘不染

尝试仅在客户端上调用websocket,例如,您可以检测是这些导入的浏览器还是服务器

import { isPlatformBrowser } from '@angular/common';
import { Inject, PLATFORM_ID } from '@angular/core';

然后在您的代码中使用它们,这也许可以解决问题!

@Component({ ... })
export class AppComponent implements OnInit {

    private isBrowser: boolean = isPlatformBrowser(this.platformId);

    constructor(
       @Inject(PLATFORM_ID) private platformId: Object
    ) {
        if (isBrowser) {
            let webSocket = new WebSocket("----server url----");
        }
    }
}
2020-07-07