本次教程的应用场景主要针对云帮201704之前版本的云帮系统。本教程针对安装在阿里云等云服务商上且有公网需求的用户云帮201704版本已经对此进行了优化,不需要配置。
WebSocket它实现了浏览器与服务器全双工通信,能更好的节省服务器资源和带宽并达到实时通讯的目的,与HTTP一样基于已建立的TCP连接来传输数据,但是它和HTTP最大不同是:WebSocket是一种双向通信协议。在建立连接后,WebSocket服务器端和客户端都能主动向对方发送或接收数据,就像Socket一样;WebSocket需要像TCP一样,先建立连接,连接成功后才能相互通信。
属于Web领域的实时推送技术,目的让用户不刷新浏览器就可以实时更新,其应用场景为在线聊天、在线客服、WebIM之类的。 云帮使用WebSocket服务主要如下:
访问:ws://ip:port
其大概格式如下:
Request Method:GET
Status Code:101 Switching Protocols
Connection:upgrade
Date:Thu, 20 Apr 2017 03:29:52 GMT
Sec-WebSocket-Accept:KdMf2rUedrfWuYlzXh+Nsr1J4pA=
Server:nginx/1.10.1
Upgrade:websocket
接下来就具体说说云帮如何修改websocket服务
如何配置公网环境下的实时消息的WebSocket服务。
最新版本默认设置了.4月之前的版本可以 编辑管理节点 /etc/goodrain/docker-compose.yaml 文件,找到mpush段落, 在ports后添加一行
mpush:
container_name: mpush
environment:
- ZMQ_SUB_FROM=tcp://10.*.*.*:9242
image: hub.goodrain.com/dc-deploy/mpush
log_driver: json-file
log_opt:
max-size: 50m
ports:
- 0.0.0.0:6060:6060
restart: always
如有其他特殊要求可以根据如下自行选择:
ports:
- "<privite_ip>:6060:6060"
- "<public_ip>:6060:6060"
修改完以后重建容器
dc-compose up -d
云帮默认URL地址为内网地址。
编辑/etc/goodrain/console.py 文件,找到WEBSOCKET_URL, 更改为云帮的内网或者外网IP
WEBSOCKET_URL = {
'cloudbang': 'ws://<ip>:6060/websocket',
}
重启console容器
dc-compose restart console
最新版本默认已经设置了。
编辑/etc/goodrain/console.py 文件,找到DOCKER_WSS_URL, 更改为云帮的内网或者外网IP
DOCKER_WSS_URL = {
'is_wide_domain': True,
'type': 'ws',
'cloudbang':'<ip>:8188',
}
这里写的是内网IP,如果云帮是安装在远程,通过公网连接,可以写外网IP地址。 修改完重启console容器
dc-compose restart console
编辑 /etc/nginx/sites-enabled/webconsole 文件
...
server {
listen <ip>:8188;
server_name webconsole.goodrain.me;
...
}
ip设置为内网ip,或者省略不写ip