我有一个在服务器上使用nestjs
的拆分应用程序,在客户端上使用了Angular
应用程序。使用@nestjs/websockets
模块使用socket.io设置websocket似乎很容易,而在我使用ngx-socket-io
的客户端上。我以这个repo为基础。现在,当我将项目的@nestjs/websockets
依赖性更新为最新版本时,就会得到
我期望CORS问题,并且在更新后,我可以通过添加
来解决它们 app.enableCors({
origin: 'http://localhost:4200',
credentials: true,
});
到我的main.ts
文件,但是我不知道为什么不提供该客户端文件。回购版本(5.7.x)既没有CORS错误,也没有提供文件的问题。
我尝试了@WebSocketGateway()
的几个设置,移到另一个端口,设置了serveClient
(即使默认情况下应该为true
),但似乎没有任何效果。有什么建议吗?
谢谢
答案 0 :(得分:1)
就我而言 我替换了
app.useWebSocketAdapter(new WsAdapter(app));
来自
import { WsAdapter } from '@nestjs/platform-ws';
使用
app.useWebSocketAdapter(new IoAdapter(app));
主要.ts
中的
import { IoAdapter } from '@nestjs/platform-socket.io';
像魅力一样工作!
答案 1 :(得分:0)
问题是nestjs
确实将较低级别的平台(socket.io
,express
,fastify
,...)与nestjs
模块分开了。 websocket模块需要安装用于socket.io的基础平台。
npm install --save @nestjs/platform-socket.io
要提供socket.io
客户端文件,似乎还需要安装HTTP平台以进行快递
npm install --save @nestjs/platform-express
v6的migration guide中的更多信息。
答案 2 :(得分:0)
我遇到了同样的问题。我正在网络浏览器中打开应用程序的客户端,但直接从我的文件系统中打开(例如,我会双击桌面上小虚拟 fake-front-end.js 旁边的文件 index.html .. .)在我通过适当的服务器实际访问 index.html 之前,CORS 问题似乎会一直存在。所以我在我的后端创建了一个路由,为 index.html 和 fake-front-end.js 提供服务。
socket.io 官方文档中有关于 CORS 的部分。在 nestjs 网站上有一个部分,但对我来说两者都没有真正帮助。