Mar*_*ber 11 proxy websocket webpack webpack-dev-server
是否可以在webpack开发服务器中代理websocket连接?我知道如何将常规HTTP请求代理到另一个后端,但它不适用于websockets,大概是因为代理配置中的目标以http://开头...
Mr.*_*ice 25
webpack-dev-server的1.15.0版支持代理websocket连接.将以下内容添加到您的配置中:
devServer: {
proxy: {
'/api': {
target: 'ws://[address]:[port]',
ws: true
},
},
}
Run Code Online (Sandbox Code Playgroud)
@先生。香料的答案是正确的。但还可以进一步简化,查看http-proxy-middleware,可以按如下方式设置,即只需添加ws: true并保留其他设置即可。
// proxy middleware options
var options = {
target: 'http://www.example.org', // target host
changeOrigin: true, // needed for virtual hosted sites
ws: true, // proxy websockets
...
Run Code Online (Sandbox Code Playgroud)
的WebPack开发服务器不支持代理方式的WS连接还没有。
在此之前,您可以通过向http-proxywebpack服务器添加其他代理来手动实现代理:
将新的依赖项添加到package.json:
"http-proxy": "^1.11.2"
Run Code Online (Sandbox Code Playgroud)通过侦听upgrade事件
手动代理Websocket连接
// 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(...)
Run Code Online (Sandbox Code Playgroud)注意(使用一段时间后)
socket.ioWebpackDevServer使用代理websocket 来通知浏览器代码更改时存在问题。socket.io可能与代理网络套接字冲突;在我的情况下,前握手是从我的服务器,除非它响应返回连接正在下降非常快。
那时,我只是放弃了WebpackDevServer并使用了基于react-hot-boilerplate的自定义实现
| 归档时间: |
|
| 查看次数: |
10384 次 |
| 最近记录: |