介绍
默认websocket是支持wss的,所以可以使用支持wss的websocket库或者配置nginx反向代理
使用库
支持wss的websocket库很多,下面只是参考,但通常这种方法是很繁琐的,因为要处理的东西太多了,所以不推荐改代码支持而是配置nginx处理。
1
| https://github.com/mans-men/A-Simple-Websocket-server
|
配置nginx
注意,这里是配置游戏服务器的nginx,不是web服务器的nginx
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
| upstream websocket_6002{ server 182.254.178.237:6002; }
upstream websocket_4001{ server 182.254.178.237:4001; }
server { listen 80; listen 443 ssl; server_name 182.254.178.237 a-svr-001.xxx.com; ssl on;
ssl_certificate ssl\xxx.crt; ssl_certificate_key ssl\xxx.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
location /wss6002 { proxy_pass http://websocket_6002; proxy_read_timeout 500s; proxy_set_header Host $host; proxy_set_header X-Real_IP $remote_addr; proxy_set_header X-Forwarded-for $remote_addr; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'Upgrade'; }
location /wss4001 { proxy_pass http://websocket_4001; proxy_read_timeout 500s; proxy_set_header Host $host; proxy_set_header X-Real_IP $remote_addr; proxy_set_header X-Forwarded-for $remote_addr; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'Upgrade'; }
location ~ /\.ht { deny all; } }
客户端在连接的时候ip要加上后面的路径,例如连接wss6002端口 `wss://a-svr-001.xxx.com/wss6002`
|
参考
WebSocket的C++服务器端实现