Supervisor
简介
Supervisor
是 Linux/Unix
系统下的一个进程管理工具, 它是用 python2
开发的(没怎么找到它在python3下的用法). 它可以很方便的监听、 启动、 停止、 重启一个或多个进程. 在我的项目里主要是用它来开启我的 WebSocket
服务.
环境
CentOS 7
python 2.4+
安装
1 | yum install supervisor |
配置
如果使用 yum install supervisor
的命令安装,会生成默认配置 /etc/supervisord.conf
和目录 /etc/supervisord.d
在目录 /etc/supervisord.d
下创建两个新目录 conf
和 log
, conf
用来存放管理进程的配置, log
用于进程输出的日志.
然后修改一下 /etc/supervisord.conf
的 [include]
部分, 用来加载我们自己的配置:1
vi /etc/supervisord.conf
修改以下部分, 一般在文件较后面的地方:
1 | [include] |
这样我们把进程配置文件放到 /etc/supervisord.d/conf/
, Supervisor
也可以识别到了
编写进程配置文件
假如要创建一个新配置, 以我写好的 confd.conf
来看(;
为注释):
1 | [program:confd] |
要注意的坑
前面说到 Supervisor
是用 python2
开发的, 所以最好以 python2
来运行, 要确保在 shell
中直接运行 python -V
显示的版本是 python2
不过虽然是 python2
写的, 用来守护 python3
的程序是没有问题的
启动 Supervisor
1 | supervisord -c /etc/supervisord.conf |
没有出现错误提醒就表示运行成功了
检查和管理 Supervisor
1 | 检查supervisord相关进程 |
参考博客
iOS的WebSocket
weakSelf
用来解决循环引用的问题, 也以防在一个 block 中, 引用计数变为0造成对象销毁
1 | #define WeakSelf(type) __weak typeof(type) weak##type = type; |
cocoapod
用这个来管理iOS第三方包, 包括下面要用到的 SocketRocket
安装
1 | sudo gem install cocoapods |
配置文件
在你的项目根目录下, 新建一个文件名为 Podfile
, 输入以下内容:
1 | platform :ios, '8.0' |
然后执行
1 | pod install |
就能安装好 SocketRocket
了, 同时记得打开项目时打开 .xcworkspace
文件, 而不是原来那个
如果以后更新了 Podfile
文件, 则运行
1 | pod update |
SocketRocket
它是Facebook开发的OC语言里WebSocket的框架
大概说一下基本用法, 然后放上简单测试过的代码
创建websocket连接
1 | #import <SocketRocket.h> |
开启websocket连接
1 | // 开启连接 |
关闭连接
1 | // 关闭连接 |
发送消息
这里的数据格式是写成我的项目需要的 JSON
数据, 可以根据需要更改
1 | - (void) wsOperate: (NSString *) action data:(NSString *)data { |
处理接受到的消息
1 | #pragma mark - socket delegate |
使用方法
目前是把整个封装成一个类, 使用单例模式, 这样其他地方要用的时候就获取实例来使用
简单测试
黄框是主动发送给服务器收到的回复;
橙框是收到服务器主动发送的数据;
其他
关于心跳和重连可以看完整代码, 这些都是根据自己需要实现的, 跟 websocket
没有很强烈的关系
还有就是在这个框架的使用, 没有看到类似其他python websocket库中有 onerror 的委托, 不知道这里是如何处理的…
完整代码
以下代码只是第一版, 之后会根据需要修改代码
1 | // .h |
1 | // |