node.js - 如何使用 webpack-dev-server 将 socket.io 代理到服务器
问题描述
- 节点:v12.19.0
- Egg.js:v2.27.0
- 创建反应应用程序:v4.0.0
- http-代理中间件:v1.0.6
- socket.io 客户端:v2.3.1
反应客户端:
import io from 'socket.io-client';
const socket = io({
transports: ['websocket']
});
socket.on('connect', () => {
console.log('socket.io client connected!');
});
setupProxy.js
const { createProxyMiddleware } = require('http-proxy-middleware');
module.exports = (app) => {
app.use(
'/socket.io',
createProxyMiddleware({
target: 'http://127.0.0.1:7001',
changeOrigin: true,
ws: true
})
);
};
上面的代码不起作用。
如果客户端代码如下,则 websocket 运行良好:
const socket = io('http://127.0.0.1:7001', {
transports: ['websocket']
});
解决方案
我不知道为什么,但这对我有用。(无需使用transports
选项)
setupProxy.js
const { createProxyMiddleware } = require('http-proxy-middleware');
module.exports = (app) => {
app.use(
'/socket.io',
createProxyMiddleware({
target: 'ws://127.0.0.1:7001',
changeOrigin: true
})
);
};
推荐阅读
- java - 从 ServerSOAPFaultException 读取 CXF 异常消息详细信息
- apache - ErrorDocument 不能作为 httpd-vhosts.conf 中的本地路径工作
- java - Android:AsyncTask 中的 execute() 方法是如何工作的?
- java - 当调用 IntBinaryOperator 的新实例时,ApplyAsInt 如何自动工作?
- javascript - 如何在同一标签的 v-for 循环中访问当前对象
- python - Python烧瓶API接收十六进制数据
- flutter - Flutter:如何创建具有固定第一列的水平滚动表?
- php - 为什么输出没有显示新变量?
- java - 与 ReentrantLock 相比,ReentrantReadWriteLock 的性能非常差
- java - 如何循环遍历列表