xiaoniu_socketio_server简易 socketio 推送服务

联合创作 · 2023-09-18 19:00

小牛简易 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




浏览 13
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报