一、安裝 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的解決方法有額外的好處,如:能夠發現鏈接是否被意外關閉等。後端