JS技术

使用nginx作为websocket的proxy server - 周翔的专栏 - 博客频道 - CSDN.NET 周翔

字号+ 作者:H5之家 来源:H5之家 2015-12-13 12:13 我要评论( )

OracleDatabase11g官方下载地址:http://www.oracle.com/technology/global/cn/software/products/database/oracle11g/112010_win32soft.html下载完成后进行安装

WebSocket

WebSocket协议为创建客户端和服务器端需要实时双向通讯的webapp提供了一个选择。其为HTML5的一部分,WebSocket相较于原来开发这类app的方法来说,其能使开发更加地简单。大部分现在的浏览器都支持WebSocket,比如Firefox,IE,Chrome,Safari,Opera,并且越来越多的服务器框架现在也同样支持WebSocket。

在实际的生产环境中,要求多个WebSocket服务器必须具有高性能和高可用,那么WebSocket协议就需要一个负载均衡层,NGINX从1.3开始支持WebSocket,其可以作为一个反向代理和为WebSocket程序做负载均衡。

WebSocket协议不同于HTTP协议,但是WebSocket握手是通过HTTP来完成的,使用HTTP的Upgrade设施来升级连接从HTTP到WebSocket。这个允许WebSocket程序能够更简单地融入现有的基础设施。比如,WebSocket程序可以使用80和443标准的HTTP端口,从而允许使用存在的防火墙策略。

一个WebSocket程序持有一个长时间运行的在客户端和服务器端之间打开的连接,促进实时应用程序的开发(这个翻译有问题)。被用来升级连接从HTTP到WebSocket的HTTP Upgrade机制使用Upgrade和Connection头部来完成。在反向代理服务器支持WebSocket中,需要面临一些挑战。第一个是WebSocket是一个hop-by-hop协议,所以当代理服务器拦截来至于客服端的一个Upgrade请求时,代理服务器需要发送它自己的Upgrade请求给后端服务器,包括一些合适的头部。同样,因为WebSocket是长时间存活,相反的,HTTP连接是典型的短连接,反向代理服务器必须允许这些连接保持打开,而不是在它们看起来闲置时关闭它们。

nginx

NGINX通过允许一个在客户端和后端服务器之间建立的隧道来支持WebSocket。为了NGINX发送来至于客户端Upgrade请求到后端服务器,Upgrade和Connection头部必须被设置明确。

示例,这个例子在我前面文章中使用过–chatRobot。上次是客户端直接连的express程序,这里我们使用nginx来做代理。

upstream wsbackend { server 127.0.0.1:3000; } server { listen 8090; server_name localhost; location / { proxy_pass ; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } }

我们将qt程序中的链接改一下

const char* server_url = "ws://localhost:8090";

我们的chatRobot还是一样的可以运行。

这里写图片描述

其实这只是一个简单地接合nginx和nodejs的例子。
这里我总结了几点我们为什么把nginx放在前面的。

使用nginx是为了更好地使用nodejs来提供服务。

  • 上一篇express 4.x Api 中文版
  • 顶 0 踩 0

    我的同类文章

    猜你在找

    查看评论

    * 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

    个人资料


    zhx6044

  • 访问:202365次
  • 积分:4102
  • 等级:

    积分:4102

  • 排名:第4023名
  • 文章搜索

    文章分类

  • C/C++(78)
  • qt(53)
  • 设计模式(13)
  • Linux(26)
  • 嵌入式(11)
  • 数据结构与算法(15)
  • 菜鸟的日子(8)
  • UML(1)
  • java(5)
  • C++模板(24)
  • 杂项(7)
  • openCV(8)
  • linux服务器(12)
  • perl学习(9)
  • 感悟(3)
  • hadoop(1)
  • linux驱动学习(6)
  • 51单片机(1)
  • Clojure学习(0)
  • mongoDB(1)
  • IT疯人疯语(4)
  • windows编程(1)
  • 写給女朋友看的C++教程(0)
  • PHP(2)
  • IOS(3)
  • android(6)
  • boost.asio(3)
  • scrapy(2)
  • python(4)
  • zigbee(1)
  • docker(1)
  • nodejs(7)
  • express(5)
  • nginx(4)
  • fastcgi(2)
  • Yocto(1)
  • 文章存档

    阅读排行

  • qwt学习一(11456)
  • 移植qt5.3.1到arm(10804)
  • ZigBee组网(6896)
  • Linux 文件锁(6875)
  • Qt mvc学习一(5278)
  • Qt5摄像头截图(5183)
  • qt外部数据传入实现动态的折线图绘制(4851)
  • qt并行计算框架QtConcurrent和qt全局线程池(4642)
  • 如何交叉编译 移植 QT(4640)
  • qt折线图显示数据(3815)
  •  

    1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

    相关文章
    • AngularJS使用HTML5摄像头拍照

      AngularJS使用HTML5摄像头拍照

      2016-02-23 09:42

    • 基于keepalived+nginx部署强健的高可用7层负载均衡方案20151214 - xuyaqun的专栏 - 博客

      基于keepalived+nginx部署强健的高可用7层负载均衡方案20151214 - xu

      2015-12-15 09:14

    • 从Container内存监控限制到CPU使用率限制方案 - 走在前往架构师的路上 - 博客频道 - CSDN.NET 走

      从Container内存监控限制到CPU使用率限制方案 - 走在前往架构师的路

      2015-12-15 09:09

    • 正式使用opencv里的训练和检测 - opencv_createsamples、opencv_traincascade

      正式使用opencv里的训练和检测 - opencv_createsamples、opencv_trai

      2015-12-15 08:44

    网友点评