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 ...
随机推荐
- Java线程通讯方法之wait()、nofity() 详解
Java线程通讯方法之wait().nofity() 详解 本文将探讨以下问题: synchronized 代码块使用 notify()与notifyAll()的区别 Java wait(),noti ...
- flask-redirect
flask-redirect from flask import Flask, url_for, request, redirect app = Flask(__name__) @app.route( ...
- python图片拼接
python图片拼接 这两天看到一张图片,想用python来实现类似的图片拼接 先分析图片: 很明显,这张图片是由多张图片叠加拼接而成 从最后一张开始开始叠加,之后的每张图片都往上平移了一个固定的距 ...
- python 写一个生成大乐透号码的程序
""" 写一个生成大乐透号码的程序 生成随机号码:大乐透分前区号码和后区号码, 前区号码是从01-35中无重复地取5个号码, 后区号码是从01-12中无重复地取2个号码, ...
- MODIS系列之NDVI(MOD13Q1)二:modis数据相关信息
1.MODIS数据的特点 (1)全球免费:NASA对MODIS数据实行全球免费接收的政策(TERRA卫星除MODIS外的其他传感器获取的数据均采取公开有偿接收和有偿使用的政策),这样的数据接收和使用政 ...
- Struts2-学习笔记系列(3)-返回视图
Action执行execute返回字符串,又如何返回对应的页面呢? 关在在于struts中action节点配置的result.如下: 内置有的ERROR SUCCESS等好几种.看源码即可 publ ...
- Java入门第一阶段总结
前言 写了三周的模拟题,对原本就厌恶的模拟更加深恶痛绝.但是不得不说模拟题是对一门语言入门掌握其语法成效最快的一类题,轻松地从C入门到了Java.一直坚信各门语言都是想通的,一力破万法. 作业过程总结 ...
- python3(十七) nonameFunc
L = list(map(lambda x: x * x, [1, 2, 3, 4, 5, 6, 7, 8, 9])) print(L) # [1, 4, 9, 16, 25, 36, 49, 64, ...
- golang trace 分析 简例
今天,通过一个例子,一方面熟悉trace在自定义范围内的分析,另一方面golang 在协程调度策略上的浅析. Show Code // trace_example.go package main im ...
- AJ学IOS(49)多线程网络之线程的创建NSThreand
AJ分享,必须精品 一:NSThread的基本使用 1:创建和启动线程 一个NSThread对象就代表一条线程 创建.启动线程 NSThread *thread = [[NSThread alloc] ...