敲黑板|云帮WebSocket那点事

场景说明

本次教程的应用场景主要针对云帮201704之前版本的云帮系统。本教程针对安装在阿里云等云服务商上且有公网需求的用户云帮201704版本已经对此进行了优化,不需要配置。

WebSocket原理及应用思路

WebSocket它实现了浏览器与服务器全双工通信,能更好的节省服务器资源和带宽并达到实时通讯的目的,与HTTP一样基于已建立的TCP连接来传输数据,但是它和HTTP最大不同是:WebSocket是一种双向通信协议。在建立连接后,WebSocket服务器端和客户端都能主动向对方发送或接收数据,就像Socket一样;WebSocket需要像TCP一样,先建立连接,连接成功后才能相互通信。

属于Web领域的实时推送技术,目的让用户不刷新浏览器就可以实时更新,其应用场景为在线聊天、在线客服、WebIM之类的。 云帮使用WebSocket服务主要如下:

  • 实时消息 推送实时日志信息及监控数据信息
  • 交互消息 通过Web浏览器操作容器等

访问: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服务

实时消息

如何配置公网环境下的实时消息的WebSocket服务。

1.修改docker-compose.yaml端口映射

最新版本默认设置了.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

2.更改云帮web配置文件

云帮默认URL地址为内网地址。

编辑/etc/goodrain/console.py 文件,找到WEBSOCKET_URL, 更改为云帮的内网或者外网IP

WEBSOCKET_URL = {
    'cloudbang': 'ws://<ip>:6060/websocket',
}

重启console容器

dc-compose restart console

交互信息

最新版本默认已经设置了。

1.修改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

2.修改nginx配置

编辑 /etc/nginx/sites-enabled/webconsole 文件

...
server {
    listen <ip>:8188;
    server_name webconsole.goodrain.me;
   ...
    }

ip设置为内网ip,或者省略不写ip

原文发布于微信公众号 - 好雨云(goodrain-cloud)

原文发表时间:2017-04-27

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏沈唁志

网页服务器HTTP响应状态-HTTP状态码

23720
来自专栏大魏分享(微信公众号:david-share)

红帽技术干货速递系列之1:RHV4实验环境快速部署指南

大卫说: 本文是大卫同事马林根据实验完成的RHV4.0 step by step的安装步骤。这对于我们在PoC环境中部署RHV有很大的帮助。大卫也欢迎读者朋友们...

40940
来自专栏SAP梦心的SAP分享

【域控管理】父域的搭建

从这篇博文开始,所有的域控系统都是在虚拟机中创建的。 在VM里安装Windows Server 2008 R2的方法就不多说了,无脑式安装,略过不提。 进到系统...

41380
来自专栏黄子玥的专栏

Websocket 基础篇

WebSocket 规范定义了一种API,可在网络浏览器和服务器之间建立“套接字”连接。简单地说,客户端和服务器之间存在持久的连接,而且双方都可以随时开始发送数...

2.4K10
来自专栏技术博客

JavaScript判断页面是否已经加载完毕

  在做针对CheckBox框点击事件的时候,发现点击以后有时候会报错,但是是生成的JavaScript的代码的内部错误,无法判断到底是什么地方有问题。就一直在...

9420
来自专栏calvin

在Jenkins中使用sonar进行静态代码检查

懒得说,跟着官方文档走就行,这边主要的开发语言是.net core 和 typescript,所以在sonar server中的应用市场搜索对应语言安装就完事 ...

23120
来自专栏运维小白

Linux基础(day50)

12.10 Nginx访问日志 Nginx访问日志目录概要 日志格式 vim /usr/local/nginx/conf/nginx.conf //搜索log_...

22690
来自专栏云计算教程系列

如何在Ubuntu上部署Elixir-Phoenix MySQL应用程序

在本教程中,您将使用Phoenix-Ecto和Mariaex配置现有的Phoenix应用程序连接到MySQL数据库。Ecto是Phoenix应用程序广泛使用的数...

33720
来自专栏python百例

119-比较文件的差异

python标准库提供了一个difflib,可以进行文件的比较,并且可以生成网页的形式。

19620
来自专栏Python自动化测试

Jmeter4.0之插件安装(三)

使用Jmeter的实际过程中,需要使用到很多插件,比如json的插件,还有就是做websocket接口测试的时候需要下载websocket的插件,...

53940

扫码关注云+社区

领取腾讯云代金券