express+socket.io

一、安装 express和socket.ionode

cnpm install express -S
cnpm install socket.io -S

运行nginx

node app.js

 

二、宝塔nginx配置express

WebSocket可使用 ws 或 wss 来做为统一资源标志符,相似于 HTTP 或 HTTPS。其中 ,wss 表示在 TLS 之上的 WebSocket,至关于 HTTPS。默认状况下,WebSocket的 ws 协议基于Http的 80 端口;当运行在TLS之上时,wss 协议默认是基于Http的 443 端口。说白了,wss 就是 ws 基于 SSL 的安全传输,与 HTTPS 同样样的道理。因此,若是你的网站是 HTTPS 协议的,那你就不能使用 ws:// 了,浏览器会 block 掉链接,和 HTTPS 下不容许 HTTP 请求同样。npm

server {

    location / {

        proxy_pass http://localhost:{port};

        proxy_http_version 1.1;

        proxy_set_header Upgrade $http_upgrade;

        proxy_set_header Connection "upgrade";

    }

}

 自1.3 版本开始,Nginx就支持 WebSocket,而且能够为 WebSocket 应用程序作反向代理和负载均衡。WebSocket 和 HTTP 是两种不一样的协议,可是 WebSocket 中的握手和 HTTP 中的握手兼容,它使用 HTTP 中的 Upgrade 协议头将链接从 HTTP 升级到 WebSocket,当客户端发过来一个 Connection: Upgrade请求头时,其实Nginx是不知道的。因此,当 Nginx 代理服务器拦截到一个客户端发来的 Upgrade 请求时,须要咱们显式的配置Connection、Upgrade头信息,并使用 101(交换协议)返回响应,在客户端、代理服务器和后端应用服务之间创建隧道来支持 WebSocket。
   固然,还须要注意一点,此时WebSocket 仍然受到 Nginx 缺省为60秒的 proxy_read_timeout 配置影响。这意味着,若是你有一个程序使用了 WebSocket,但又可能超过60秒不发送任何数据的话,那么须要增大超时时间(配置proxy_read_timeout),要么实现一个Ping、Pong的心跳消息以保持客户端和服务端的联系。使用Ping、Pong的解决方法有额外的好处,如:能够发现链接是否被意外关闭等。后端

相关文章
相关标签/搜索
本站公众号
   欢迎关注本站公众号,获取更多信息