goim 是一个支持集群的 IM 及实时推送服务(支持 Websocket、HTTP 和 TCP 协议)。
特性
轻量级
高性能
纯 Golang 实现
支持单个、多个以及广播消息推送
支持单个 Key 多个订阅者(可限制订阅者最大人数)
心跳支持(应用心跳和 tcp、keepalive、http log pulling)
支持安全验证(未授权用户不能订阅)
多协议支持(websocket,tcp,http)
可拓扑的架构(job、logic 模块可动态无限扩展)
基于 Kafka 做异步消息推送
架构
协议
Benchmark
goim 文章系列(共5篇): goim 架构与定制 从goim定制, 浅谈 golang 的 interface 解耦合与gRPC goim中的 bilibili/discovery (eureka)基本概念及应用 goim 的 data flow 数据流 goim的业务集成(分享会小结与QA) 有个 slack 频道, 不少朋友在交流 goim , 欢迎加入slack #goim [简述] g
goim 文章系列(共5篇): goim 架构与定制 从goim定制, 浅谈 golang 的 interface 解耦合与gRPC goim中的 bilibili/discovery (eureka)基本概念及应用 goim 的 data flow 数据流 goim的业务集成(分享会小结与QA) 有个 slack 频道, 不少朋友在交流 goim , 欢迎加入slack #goim 0. 关于
本文简单描述一下goim的auth流程 auth成功以后,便可以接收推送过来的聊天消息 auth流程如下: client ⇒ comet ⇒ logic ⇒ comet ⇒ client 其中client发往comet的结构为 message Proto { int32 ver = 1 [(gogoproto.jsontag) = "ver"]; int32 op = 2 [(go
启动comet服务 今天就来看看comet怎么开启服务,然后怎么去控制buckt,room和在线人数的 new comet server srv := comet.NewServer(conf.Conf) func NewServer(c *conf.Config) *Server { s := &Server{ //1 c: c, round: NewRo
参考:https://github.com/Terry-Mao/goim/blob/master/README_cn.md 或 https://toutiao.io/posts/125325/app_preview 或http://www.open-open.com/lib/view/open1448548274235.html Ubuntu的图形界面和命令行模式的切换: ctrl+alt+F2:
开源项目地址 https://github.com/Terry-Mao/goim https://github.com/Terry-Mao/goim/blob/master/README_cn.md goim源码分析与二次开发-comet分析一 goim源码分析与二次开发-comet分析二
goim搭建 基于docker安装kafka和redis zookeeper version: '3.1' networks: default: external: name: zookeeper_network services: zoo1: image: zookeeper restart: always container_name: zo
轮询 客户端隔一段时间就去服务器上获取一下信息,看是否有更新的信息出现,这就是轮询。我们可以通过AlarmManager来管理时间,当然时间的设置策略也是十分重要的,由于每次轮询都需要建立和释放TCP连接,所以在移动网络情况下耗电量相当大。 移动网络状态转换 针对不同应用的需求,有的可以每5分钟查询一次或者每10分钟查询一次,但是这种策略的电量和流量消耗十分严重。我们可以使用退避法(暂时这么说),
Hprose 2.0 最大的亮点就是增加了推送功能的支持,而且这个功能的增加是在不修改现有通讯协议的方式下实现的,因此,这里的推送服务,即使不是 Hprose 2.0 的客户端或者服务器也可以使用。 当然,在旧版本的客户端调用推送服务,或者在旧版本的服务器上自己实现推送,需要多写一些代码。所以,如果你所使用的语言支持 Hprose 2.0,那幺推荐直接使用 Hprose 2.0 的推送 API 来
http://Socket.io允许你触发或响应自定义的事件,除了connect,message,disconnect这些事件的名字不能使用之外,你可以触发任何自定义的事件名称。 服务器端 // 注意,io(<端口号>) 将为你创建一个http服务。 var io = require('socket.io')(80); io.on('connection', function (socket)
使用websocket当sse使用,其他一律走http请求,这样开发出来的im会不会好点?
subscribe 方法 client.subscribe(topic, callback[, timeout[, failswitch]]); client.subscribe(topic, id, callback[, timeout[, failswitch]]); subscribe 方法的用处是订阅服务器端的推送服务。该方法有两种方式,一种是自动获取设置客户端 id,另一种是手动设置客
服务器端提供了比较多的关于推送的 API,包括广播,多播和单播方式的推送,还有超时,心跳,推送事件等设置。 Timeout 字段 该字段用于设置推送空闲超时。默认值为 120 秒,即 2 分钟。 当服务器发布了推送主题后(后面会专门介绍推送),客户端会跟服务器端保持一个长连接,如果达到超时时间,仍然没有任何消息推送给客户端,则返回 nil,此时,如果客户端仍然在线的话,则会立即再次发送获取推送主题
从文档中我可以看出推送API和服务器发送事件都是半双工的,但为什么两种不同的技术具有相同的功能?推送API中是否有更重要的内容?
本文向大家介绍iOS10推送通知开发教程,包括了iOS10推送通知开发教程的使用技巧和注意事项,需要的朋友参考一下 虽然通知经常被过度使用,但是通知确实是一种获得用户关注和通知他们需要更新或行动的有效方式。iOS 10有了新的通知,如新消息、商业信息和时间表的变化。在本教程中,我将向你展示如何使用通知在你的iOS应用程序,并且显示iOS 10引入了新特性。开发iOS 10推送通知你需要最新版本的X