需求
- 原TCP服务,需要支持websocket协议
方案
- 中间层 websocket to tcp bridge/proxy
- 代理选型:websockify (协议代理)
- (可选)入口选型:nginx (入口,TLS卸载)
环境准备
- (可选)linux 服务器
- python 3.6+
- websockify: https://github.com/novnc/websockify v0.12.0
- (可选)nginx: yum install nginx
部署
(可选)安装nginx
(可选)配置nginx,反向代理到websockify
安装websockify
- 下载websockify
1
2
3git clone https://github.com/novnc/websockify.git
cd websockify
git checkout v0.12.0 - 启动websockify
1
2
3
4
5测试方式
./run -v --traffic 20803 127.0.0.1:20802
生产方式
./run -D 20803 127.0.0.1:20802
- 下载websockify
测试
启动一个 tcp 服务端:
1
nc -k -l 20802
postman 发送请求:
- 不走nginx
1
ws://xxx:xxx:xxx:xx:20803
- 走nginx+tls
1
wss://xxx:xxx:xxx:xx:443/?ip=xxx:xxx:xxx:xx&port=20803
- 不走nginx
备注:websockify 仅支持 binary 数据传输,具体参考 https://github.com/novnc/websockify/issues/365