【发布时间】:2020-08-22 02:35:41
【问题描述】:
我正在尝试为 socket.io-client 的 React 应用添加代理
我将setupProxy.js 与http-proxy-middleware 一起使用,这对API 很好,但不适用于套接字
带有节点 js 的服务器代码
var app = require('express')();
var http = require('http').createServer(app);
var io = require('socket.io')(http);
app.get('/', function (req, res) {
res.sendFile(__dirname + '/index.html');
});
io.on('connection', function (socket) {
setInterval(() => {
console.log('emit event');
io.emit('event', { data: 'worked successfully!' });
}, 1000);
});
http.listen(8080, function () {
console.log('listening on *:8080');
});
带有反应的客户端代码
function App() {
const socket = socketIOClient('/', {
transports: ['websocket'],
});
useEffect(() => {
socket.on('connect', () => {
console.log('connected');
});
socket.on('event', (data) => {
console.log(data);
});
}, []);
return (
<div className='App'>
Socket Proxy test
</div>
);
}
还有我的 setupProxy.js
const { createProxyMiddleware } = require('http-proxy-middleware');
module.exports = (app) => {
app.use(
'/socket.io',
createProxyMiddleware({
target: 'http://localhost:8080',
changeOrigin: true,
ws: true, // enable websocket proxy
logLevel: 'debug',
})
);
};
【问题讨论】:
标签: node.js reactjs websocket proxy socket.io