xiaoniu_socketio_server简易 socketio 推送服务
小牛简易 socketio 推送服务(xiaoniu_socketio_server)。
特性
- 基于workerman 实现
 - 支持API动态推送
 - 支持一对一,分组推送
 - 支持离线推送
 - 未授权,则无法接收推送信息,断掉链接
 - 数据安全,简单操作
 - Docker 一键安装,方便使用
 
更新记录
2021-11-17
- 项目第一版本
 
端口有两个(可自定义)
2120 socket 端口
2121 http推送的 端口
 
 防火墙记得放行
配置
config.json
{
  "clients": {
    "demo(这个key就是client_id)":{
      "api_key": "demo",
      "aes_key": "698d51a19d8a121ce581499d7b701668(如果为空,证明不加密)"
    },
    "demo2":{
      "api_key": "demo2",
      "aes_key": "698d51a19d8a121ce581499d7b701669"
    }
  },
  "origins": "*:*(多个域名 空格隔开)",
  "sock_port": 2020,
  "http_port": 2021
} 
  前端实现
// 连接服务端 端口 是 2120 (可自定义) var socket = io('http://'+document.domain+':2120');
// 连接服务端 端口 是 2120 (可自定义)
    var socket = io('http://'+document.domain+':2120');
    // 连接后登录
    socket.on('connect', function(){
    	socket.emit('login', {'client_id':'{客户端id配置里面设置,一一对应}','room':'{推送房间,自定义}','time_stamp':'{当前时间戳}','sign':'{签名规则见下面}'});
    });
    // sign = md5(client_id={客户端ID,配置里面}&&room={推送的房间}&&time_stamp={当前时间戳}&&api_key={配置里面找})
    // 后端推送来消息时 事件可自定义
    socket.on('message', function(msg){
         // {data: "1", is_online: true} data 就是http请求的content  is_online 是否是在线数据
         if(typeof msg == "object") {
             // 后台推送的数据
             // 如果 配置有填aes_key data会是个加密的字符串 需自行解密            
             if (msg['data']) {
                  msg = Decrypt(msg['data'])
             }
         }else {
            // 授权如果有失败 会返回字符串
         }
    }); 
   API推送
请求url
http://127.0.0.1:2121(端口可自定义)
支持 GET,POST请求 推荐用POST
参数
- client_id 客户端(设备)ID 跟配置一一对应 如果没配置请求是不通的,必填
 - content: 推送的内容,必填
 - event: 推送客户端的事件,不填默认 
message - room: 对应的房间号 不填 默认全部
 - is_save_offline 用户离线是否离线推送 1是 0否 默认 0
 
常规部署
Linux系统
启动服务(debug)
php start.php start
正式环境启动服务
php start.php start -d
停止服务
php start.php stop
服务状态
php start.php status
windows系统
双击 start_for_win.bat
如果启动不成功请参考 Workerman手册 配置环境
docker一键部署
*. 修改项目绝对路径
- 安装docker
 
安装 docker 跟 docker-compose 自行安装
sudo docker-compose up --build -d 
   评论
