Express socket.io的快速代理
在运行微服务体系结构时,我希望通过网关将所有socket.io流量转发到socket.io微服务。我的网关正在运行express。我当前的实现如下所示:Express socket.io的快速代理,express,socket.io,cors,microservices,api-gateway,Express,Socket.io,Cors,Microservices,Api Gateway,在运行微服务体系结构时,我希望通过网关将所有socket.io流量转发到socket.io微服务。我的网关正在运行express。我当前的实现如下所示: import proxy from 'http-proxy-middleware'; import express from 'express'; import cors from 'cors'; const app = express(); app.use(cors()) // proxy middleware options cons
import proxy from 'http-proxy-middleware';
import express from 'express';
import cors from 'cors';
const app = express();
app.use(cors())
// proxy middleware options
const options = {
target: 'http://127.0.0.1:1234/test',
changeOrigin: true,
secure: false,
ws: true
};
const exampleProxy = proxy(options);
app.use('/socket.io', exampleProxy);
app.use('/upgrade', exampleProxy);
app.listen(port);
奇怪的是GET请求通过我的服务,所以我得到了套接字连接,但是当试图从socket.io客户端POST请求发出事件时,请求超时
在这种情况下,My express server通过morgan记录以下内容:
[HPM] Error occurred while trying to proxy request /socket.io/?EIO=3&transport=polling&t=MrZfNeU&sid=cR-5g0531PU9XxiGAAAN from localhost:2999 to http://127.0.0.1:1234/test (ECONNRESET) (https://nodejs.org/api/errors.html#errors_common_system_errors)
我的前端显示cors错误:
Access to XMLHttpRequest at 'http://localhost:8888/socket.io/?EIO=3&transport=polling&t=MrZfNeU&sid=cR-5g0531PU9XxiGAAAN' from origin 'http://localhost:3000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
当直接连接到socket.io服务器时,它工作正常。可能是什么问题?谢谢 显然您收到了CORS错误。 CORS是跨来源的资源共享 你能激活cors中间件吗?在快车方面
来源:问题已通过将bodyParser放置在代理下方解决,如下所述。我尝试使用app.usecors,但没有帮助。您是否可以查看并尝试以下操作:是的,我尝试添加changeOrigin和secure,但不幸无效。