NodeJS反向代理websocket
如需转载请标明出处:http://blog.csdn.net/itas109
QQ技术交流群:129518033
文章目录
NodeJS反向代理websocket
@[toc]
前言
代码
相关问题:
1.http和websocket不同端口对外暴露一个端口
2.nodejs反向代理
相关文章:
NodeJS结合express使用websocket
前言
虽然Nginx可以进行反向代理,但是与开发人员代码的贴合度不高,尤其是前端进行端口访问时,可能会存在由于Nginx设置反向代理而带来与程序不匹配的问题(比如前端代码不使用URL端口进行访问)。并且多个端口会带来Nginx的维护成本。在NodeJS结合express使用websocket一文中,可以将http和ws端口合并,但是有时需要分别使用http和ws两个端口。本文将介绍如何在nodejs代码级进行反向代理
代码
const express = require('express');
const proxy = require('http-proxy-middleware');
const app = express();
// var express = require('express');
// var http = require('http');
let https = require("https");
var expressWs = require('express-ws');
var fs = require('fs');
var option = {
key: fs.readFileSync('./keys/private.key'),
ca: fs.readFileSync('./keys/csr.pem'),
cert: fs.readFileSync('./keys/file.crt')
}
app.get('/', function (res, req) {
req.send('123')
})
var wsProxy = proxy({
target: 'https://localhost:8080', // 目标主机
changeOrigin: true, // 需要虚拟主机站点
ws: true, // 是否代理websocket
}); //开启代理功能,并加载配置
// 反向代理(这里把需要进行反代的路径配置到这里即可)
// eg:将/api/test 代理到 ${HOST}/api/test
app.use('/test', wsProxy);
serverProxy = https.createServer(option, app);
// 监听端口
serverProxy.listen(8888, () => {
console.log(`server running`);
});
serverProxy.on('upgrade', wsProxy.upgrade); // -- subscribe to http 'upgrade'
var app2 = express();
var httpServer;
// httpServer = http.createServer(app2);
httpServer = https.createServer(option, app2);
expressWs(app2, httpServer);
app2.ws('/test', function (ws, req) {
console.log("ok")
ws.send('你连接成功了')
ws.on('message', function (msg) {
// 业务代码
console.log(msg);
ws.send(msg)
})
})
app2.get('/', function (res, req) {
req.send('123')
})
// app.listen(8080);
// httpServer.listen(8080);
httpServer.listen(8080);
————————————————
版权声明:本文为CSDN博主「itas109」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/itas109/java/article/details/104034178
NodeJS反向代理websocket的更多相关文章
- Nginx实战之反向代理WebSocket的配置实例
http://www.jb51.net/article/112183.htm 最近在工作中遇到一个需求,需要使用 nginx 反向代理websocket,经过查找一番资料,目前已经测试通过,所以这篇文 ...
- Nginx反向代理websocket配置实例
最近有一个需求,就是需要使用 nginx 反向代理 websocket,经过查找一番资料,目前已经测试通过,本文只做一个记录 复制代码 代码如下: 注: 看官方文档说 Nginx 在 1.3 以后的版 ...
- NGINX: 反向代理 websocket
参考: [ Using multiple nodes ] [ Nginx 官网 WebSocket proxying ] 关于 websocket 的介绍可以看阮大大的这篇 [ WebSocket 教 ...
- 配置 Nginx 反向代理 WebSocket
用Nginx给网站做反向代理和负载均衡是广泛使用的一种Web服务器部署技术.不仅能够保证后端服务器的隐蔽性,还可以提高网站部署灵活性. 今天我们来讲一下,如何用Nginx给WebSocket服务器实现 ...
- CentOS安装Nginx,并配置nodejs反向代理
安装介绍 安装位置:/usr/local/nginx nginx安装包下载地址:http://nginx.org/download/nginx-1.7.11.tar.gz 安装依赖软件 安装nginx ...
- 配置Nginx反向代理WebSocket,以代理noVNC为例
什么是Nginx Nginx (engine x) 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器. Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮 ...
- Nginx反向代理WebSocket(WSS)
1. WebSocket协议 WebSocket 协议提供了一种创建支持客户端和服务端实时双向通信Web应用程序的方法.作为HTML5规范的一部分,WebSockets简化了开发Web实时通信程序的难 ...
- Nginx反向代理websocket配置实例(官网)
https://www.nginx.com/blog/websocket-nginx/ Blog Tech Rick Nelson of NGINX, Inc. May 16, 2014 NG ...
- nodejs反向代理插件anyproxy安装
目前我使用的是Anyproxy,AnyProxy .这个软件的特点是可以获取到https链接的内容.在2016年年初的时候微信公众号和微信文章开始使用https链接.并且Anyproxy可以通过修改r ...
随机推荐
- 【数据库】MySQL数据库(四)
一.对数据的操作(详细版) 1.添加数据 1> insert into 表名 (字段1,字段2...) values (值1,值2...); 2> insert into 表名 (字段1, ...
- Python设计模式(9)-外观模式
# /*外观模式:为外界调用提供一个统一的接口,把其他类中需要用到的方法提取# * 出来,由外观类进行调用.然后在调用段实例化外观类,以间接调用需要的# * 方法.这种方式和代理模式有异曲同工之妙.然 ...
- leetcode 746. Min Cost Climbing Stairs(easy understanding dp solution)
leetcode 746. Min Cost Climbing Stairs(easy understanding dp solution) On a staircase, the i-th step ...
- Linux远程登陆
Linux 远程登录 Linux一般作为服务器使用,而服务器一般放在机房,你不可能在机房操作你的Linux服务器. 这时我们就需要远程登录到Linux服务器来管理维护系统. Linux系统中是通过ss ...
- 一个spring 基本知识的微博(怎么加载多个xml、多个property文件、aop配置、监视器)
http://blog.sina.com.cn/s/blog_61c5866d0100ev44.html
- 解决click与hover(mouseover)的冲突问题
主要应用到一个知识点:$(selector).data('name','value'); <!DOCTYPE HTML> <html> <head> <met ...
- F - What Is Your Grade?
“Point, point, life of student!” This is a ballad(歌谣)well known in colleges, and you must care about ...
- 图2-4TCP状态转换图
这张图中描述了TCP中11个状态的转换. 光看这个图我一开始是蒙蔽的,也没有写服务器和客户端的操作流程.不过回头一想,是状态转换,也就是从一个状态到另外一个状态发生了什么,什么条件触发的.这样是不是好 ...
- 常见web漏洞整理之进击吧xss!!!
XSS在线测试环境: http://xss-quiz.int21h.jp/ https://brutelogic.com.br/xss.php 这两个站对xss的理解很有帮助!!! 参考链接: htt ...
- selenium 获取页面<input>标签的个数和各个属性的值
获取页面某个标签的数量.id.name.class的值,来辅助定位 List<WebElement> lw =driver.findElements(By.tagName( ...