首页 > 解决方案 > 如何使用 webpack-dev-server 将 socket.io 代理到服务器

问题描述

反应客户端:

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']
});

标签: node.jssocket.iocreate-react-apphttp-proxy-middleware

解决方案


我不知道为什么,但这对我有用。(无需使用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
    })
  );
};

推荐阅读