先去准备一个 Gateway,在服务端,这个 Gateway 负责跟客户端用 WebSocket 沟通交流。Gateway 有点像 Http 应用里的 Controller。
生成 Gateway 可以使用 nest 提供的命令行工具,不过这里我们先手工去创建一个,在 src 下面,新建一个 gateway 文件,名字是 app.gateway.ts 。
定义一个 Gateway 需要使用一个装饰器,先在文件顶部导入这个东西,它来自 @nestjs/websockets,要导入的是 WebSocketGateway 。
然后用一下 @WebSocketGateway 这个装饰器。用它装饰一个类,export 一个 class,名字是 AppGateway 。
默认 WebSocket 服务用的端口号跟 Http 应用使用的端口号是一样的,如果你想配置一下这个端口,可以给 @WebSocketGateway 这个装饰器提供一个参数,它的值就是要使用的端口号。
Gateway 是一种 Provider,可以在模块里配置一下这个 Provider,打开 AppModule 模块,在它的 providers 里面,添加一个 AppGateway。
现在我们就定义好了一个 WebSocket Gateway,也就是 WebSocket 客户端已经可以连接到我们创建的这个 WebSocket 服务了。