微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Node JS + Express:实现代理以公开 Angular 的 websocket

如何解决Node JS + Express:实现代理以公开 Angular 的 websocket

我是 node.js +express 的新手。

我的应用程序在 Spring Boot 和由 node.js + express 提供服务的 Angular 应用程序(前端)中实现了休息端点。上面提到的 Spring Boot 应用程序暴露了一个 websocket,我想从我的 angular 应用程序连接它。但是我不想创建两个 websocket(angular->node 和 node->spring),而是想通过 node/express 代理 websocket 流量。是否有可能?如果是的话,有人可以给我指点吗?

我曾尝试使用 http-proxy-middleware 设置 POC:

/**
 * Module dependencies.
 */
const express = require('express');
const {proxy} =  require('http-proxy-middleware');

/**
 * Configure proxy middleware
 */
const wsProxy = proxy('/user',{
  target: 'ws://localhost:8080/user',changeOrigin: true,ws: true,logLevel: 'debug',});
// Listen for the `error` event on `proxy`.

const app = express();
app.use('/',express.static(__dirname)); // demo page
app.use('/user',wsProxy); // add the proxy to express

const server = app.listen(3000);
server.on('upgrade',wsProxy.upgrade); // optional: upgrade externally

console.log('[DEMO] Server: listening on port 3000');
console.log('[DEMO] opening: http://localhost:3000');

require('open')('http://localhost:3000');

当我尝试通过 Chrome websocket 测试扩展程序连接到 ws://localhost:3000/user 时,出现以下错误

index.js:17 WebSocket 连接到 'ws://localhost:3000/user' 失败:WebSocket 握手期间出错:意外的响应代码: 404

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。