Is it possible to proxy websocket connections within the webpack dev server? I know how to proxy regular HTTP requests to another backend but it\'s not working for websockets, p
Webpack dev server does not support proxying ws connections yet.
Until then, you can implement proxying manually, by adding additional http-proxy
to webpack server:
Add new dependency to package.json
:
"http-proxy": "^1.11.2"
Proxy websocket connections manually by listening to upgrade
events
// existing webpack-dev-server setup
// ...
var server = new WebpackDevServer(...);
proxy = require('http-proxy').createProxyServer();
server.listeningApp.on('upgrade', function(req, socket) {
if (req.url.match('/socket_url_to_match')) {
console.log('proxying ws', req.url);
proxy.ws(req, socket, {'target': 'ws://localhost:4000/'});
}
});
//start listening
server.listen(...)
NOTE (after using this for some time)
There is an issue with proxying websockets as socket.io
is used by WebpackDevServer to notify browser of code changes. socket.io
may conflict with proxying websockets; in my case, connections were being dropped before handshake was returned from my server unless it responded very quickly.
At that point, I just ditched WebpackDevServer and used custom implementation based on react-hot-boilerplate