轻量级推送服务和实时在线监控平台,基于node的socket.io,支持web、android、ios客户端,支持移动端离线推送,可大规模集群部署
随着互联网网速的不断提升,实时消息的应用场景越来越多。我在参与公司多个产品的研发中,不止一次的遇到需要集成聊天功能的需求。既然是聊天就必须把消息尽快送达目标用户,做的多了就有了一套自己的经验和想法,然后借着闲暇时间一点点的就写出了这个项目。这个项目灵感来源于实际开发工作,同时又把它应用到自己开发工作中。希望它能帮到你,也希望你能给我更多的反馈和改进意见,让它帮到更多的人。
业务系统通过restful
接口方式调用推送服务
客户端通过socket.io
协议和推送服务器建立连接
通过命名空间对客户端进行安全隔离和管理,不同客户端之间不能相互收发消息,如果业务系统是saas模式,命名空间相当于公司或组织的概念
使用负载均衡器来负责每一个客户端的接入工作,每一个客户端随机分配给一个后端服务,保证后端服务负载更佳平均(需要安装nginx)
单个客户端和后端服务建立强关联,会话信息不丢失,可实现多机多进程部署
使用redis
保存相关数据,后端服务的整体响应速度更快
可实现单个用户多端连接,满足聊天系统多端登陆需求
通过界面或者接口来监控和统计客户端在线信息
通过界面模拟客户端上线/下线
通过界面模拟推送功能
模拟网络异常下的推送,方便客户端编写数据同步功能
通过界面或者接口统计消息到达率(需要客户端ack确认回执)
可查询历史消息,可统计每天的推送总量,以及当前小时/当前分钟的推送总量
当客户端未收到推送消息时,如果客户端为ios
平台则用apns
做离线推送,如果是android
会保存该消息直到客户端上线
监听每一个客户端接入事件并可回掉业务系统由业务系统决定客户端是否有权接入
监听每一个用户的离线事件并可会掉业务系统
客户端房间变动事件可选择行的广播推送到对应的房间中
客户端可主动推送消息,满足聊天系统中正在输入中的功能需求
可为每一个客户端保存一些特殊数据,比如最后一次的接入信息,操作系统信息等等,同时提供一键清除僵尸客户端功能(一定时间未接入过服务器)
后端服务本身支持cors跨域访问
采用消息队列方式推送离线消息
服务运行时的各个参数可自行配置,比如消息默认失效时间,房间名最大长度等等
docker run -id -p 443:443 --name push-demo liuss/push:
需要将 version
改成对应的版本号
访问管理页面: https://127.0.0.1
登录名 demo 密码 123456 勾选管理员选项
react-native-code-push 使用codepush进行ReactNative热部署 import React, { Component } from 'react' import reducers from './reducers' import thunk from 'redux-thunk' import {Provider} from 'react-redux' import
1、RefBase简介 什么是RefBase?RefBase是Android中的一个C++类,用于内存管理,相关的类还包括LightRefBase、sp和wp。在Android源码中的许多地方都可以看到RefBase的使用,那么,为什么RefBase这么受欢迎呢?这源于C++的指针与动态内存管理,指针本身就是一个复杂的概念,而动态内存管理又提高了其复杂性,new一般情况下与delete配对使用,防
微服务治理的一个核心需求便是服务可观察性。作为微服务的牧羊人,要做到时刻掌握各项服务的健康状态,并非易事。云原生时代这一领域内涌现出了诸多解决方案。本组件对可观察性当中的重要支柱遥测与监控进行了抽象,方便使用者与既有基础设施快速结合,同时避免供应商锁定。 安装 通过 Composer 安装组件 composer require hyperf/metric hyperf/metric 组件默认安装
1.1、什么是监控服务 监控服务(Monitor Service),是指对直播视频流的实时监控。目睹云提供的监控服务能够支持对rtmp、flv、hls等大多数直播流进行即时监控,并且渲染成图表。监控服务主要监控的是直播视频的帧率和码率信息,这样能够及时的反映出来视频流的卡顿流畅情况。 1.2、监控服务功能介绍 支持多种流监控:支持rtmp、flv、hls等多种直播视频协议流监控 历史监控数据:支持
问题内容: 在此处阅读有关服务器推送的信息。 我想将数据从Web应用程序实时推送到客户端。 我一直在将TCP套接字作为选项之一。 对于HTTP,我在这里找到了各种Java,PHP,Python和其他框架。但是我不知道这些工具是否支持Push。 您对实施服务器推送有什么建议和框架? 您会倡导使用哪种语言,为什么? 问题答案: 我现在正在使用Orbited,太好了! 如果您正在聊天或订阅类型的东西,请
Hprose 2.0 最大的亮点就是增加了推送功能的支持,而且这个功能的增加是在不修改现有通讯协议的方式下实现的,因此,这里的推送服务,即使不是 Hprose 2.0 的客户端或者服务器也可以使用。 当然,在旧版本的客户端调用推送服务,或者在旧版本的服务器上自己实现推送,需要多写一些代码。所以,如果你所使用的语言支持 Hprose 2.0,那幺推荐直接使用 Hprose 2.0 的推送 API 来
服务器端提供了比较多的关于推送的 API,包括广播,多播和单播方式的推送,还有超时,心跳,推送事件等设置。 Timeout 字段 该字段用于设置推送空闲超时。默认值为 120 秒,即 2 分钟。 当服务器发布了推送主题后(后面会专门介绍推送),客户端会跟服务器端保持一个长连接,如果达到超时时间,仍然没有任何消息推送给客户端,则返回 nil,此时,如果客户端仍然在线的话,则会立即再次发送获取推送主题
主要内容:使用普通函数创建 goroutine,使用匿名函数创建goroutine在编写 Socket 网络程序时,需要提前准备一个线程池为每一个 Socket 的收发包分配一个线程。开发人员需要在线程数量和 CPU 数量间建立一个对应关系,以保证每个任务能及时地被分配到 CPU 上进行处理,同时避免多个任务频繁地在线程间切换执行而损失效率。 虽然,线程池为逻辑编写者提供了线程分配的抽象机制。但是,如果面对随时随地可能发生的并发和线程处理需求,线程池就不是非常直观和方便了。能否