icomet 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
icomet 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票
icomet 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」 !
icomet 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」「最积极运营项目」 !
icomet 获得 2020 年度 OSC 中国开源项目评选「最积极运营项目」 !

软件简介

icomet 是一个使用 C++ 语言开发的支持百万并发连接的 comet 服务器, 使用了 libevent 网络库. 支持并发连接数高, 内存占用少, 性能优越. 支持的浏览器和操作系统平台包括: Safari(iOS, Mac), Firefox/Chrome(Windows, Mac), IE6+.

安装和启动

make
./icomet

curl -v "http://127.0.0.1:8100/sub?cname=12&seq=1"
# open another terminal
curl -v "http://127.0.0.1:8000/push?cname=12&content=hi"使用方法:

JavaScript API 使用

var comet = new iComet({
    sign_url: 'http://' + app_host + '/sign?obj=' + obj,
    sub_url: 'http://' + icomet_host + '/sub',
    callback: function(msg){
        // 收到服务器推
        alert(msg.content);
    }
});

Java/Android API 使用

项目: https://github.com/DuoZhang/iCometClient4j/

内存占用

Connections VIRT RES
0 39m 24m
100,000 302m 288m
200,000 579m 565m
500,000 1441m 1427m
1,000,000 2734m 2720m

2.7KB per connection.

展开阅读全文

代码

评论 (1)

加载中
icomet除支持浏览器外,是否支持android、ios、cs桌面型程序?谢谢 icomet
2015/03/27 09:51
回复
举报
更多评论
发表了资讯
2014/05/06 00:00

iComet聊天Demo增加好友列表和离线存储

最新版的 icomet 长连接/push 服务器的聊天 Demo 升级了, 做了如下更新: 美化界面, 更好看了. 增加好友列表, 能显示全部好友和最近联系人. 离线存储消息. 界面截图: Web界面 Android界面 源码下载地址: https://github.com/ideawu/icomet-demos

8
72
发表了资讯
2014/04/15 00:00

iComet 0.2.2.1 稳定版发布和 Android App 示例

这个版本主要是修复了内存泄露的 BUG, 让 icomet 的内存占用更少了, 在之前这篇博客里介绍. 对于一个 1 万并发连接的应用, 只需要占用不到 20M 的内存. 0.2.2.1 (2014-04-09) 修复内存泄露 BUG, 确保在 connection_closecb 中调用 evhttp_send_reply_end(2014-04-12) 重构代码 新特性: 修复BUG: 0.2.2 (2014-03-24) 修复 HttpQuery 的 BUG(evhttp_parse_query 没有和 evhttp_clear_headers 配对)(2014-04-02) JSON 对象的属性名...

0
51
发表了资讯
2014/04/02 00:00

comet 服务器 icomet 提供 Android API

支持百万连接和 comet/push 服务器 icomet 日前提供了可用于 Android 移动开发的 Java API - iCometClient4j, 用于实现手机上的消息推送功能. 结合 icomet 的 HTTP endless chunk 模式, 可提供节省电池的长连接服务. iCometClient4j项目地址: https://github.com/DuoZhang/iCometClient4j/...

11
54
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了博客
2016/03/08 11:36

PHP 用 curl 读取 HTTP chunked 数据

对于 Web 服务器返回的 HTTP chunked 数据, 我们可能希望在每一个 chunk 返回时得到回调, 而不是所有的响应返回后再回调. 例如, 当服务器是 icomet 的时候. 在 PHP 中使用 curl 代码如下: <?php   $url = "http://127.0.0.1:8100/stream"; $ch = curl_init($url); curl_setopt($ch, CURLOPT_WRITEFUNCTION, 'myfunc'); $result = curl_exec($ch); curl_close($ch); function myfunc($ch, $data){     $bytes ...

0
0
2020/09/29 17:49

服务器推送技术常用的三个解决方案

今天为上与app配合做接口的经验也有三年了,现在的app大多都有IM服务,在选择上无外乎有两种选择:一是自建IM服务,二是用第三方的云服务。 暂不表第三方的云服务如何如何。 在自建IM服务上,每家公司的选择往往逃不出下面的三个方案: 一是普通的http解决方案:app端通用http服务定时拉取消息,比例每隔3秒,虽然你和我可能都很鄙视这个方案,但确实有公司在用。 二是基于comet的解决方案(其实也是基于http):app端通过comet...

0
0
发表了博客
2016/02/05 13:15

PHP各种实用的东东

估计大部分人都会有这样的问题,在平常玩微博或的时候看到别人分享的一些实用的东西,比如一些NB的js库,或者php组件等等。看完当时加入了浏览器书签。但是出现的现象就是很少去翻它,或者说由于懒得整理后期也不好找了,这篇就当作是一个书签整理吧,也算是知识共享,有兴趣的朋友可以经常过来看看,会继续保持更新。 PHP Slim - PHP微框架,简单易用易拓展。 Swoole - Swoole是一个PHP的C扩展,可用来开发PHP的高性能高并发T...

1
11
发表了博客
2016/07/22 10:20

Comet技术详解:基于HTTP长连接的Web端实时通信技术

前言 一般来说,Web端即时通讯技术因受限于浏览器的设计限制,一直以来实现起来并不容易,主流的Web端即时通讯方案大致有4种:传统Ajax短轮询、Comet技术、WebSocket技术、SSE(Server-sent Events)。 关于这4种技术方式的优缺点,请参考《Web端即时通讯技术盘点:短轮询、Comet、Websocket、SSE》。本文将专门讲解Comet技术。(本文同步发布于:http://www.52im.net/thread-334-1-1.html) 学习交流 - 即时通讯开发交流群:2...

0
0
发表了博客
2015/03/04 08:17

移动开发相关网站

MobileHub http://mobilehub.io APICloud http://www.apicloud.com TeamTalk http://tt.mogu.io 移动框架对比图 http://mobile-frameworks-comparison-chart.com XDA智能设备网 http://www.xda.cn 菜鸟窝 http://www.cniao5.com Mob(手机短信验证/免费) http://sms.mob.com 恩布互联 http://www.entboost.com Trinea http://www.trinea.cn EOE http://www.eoeandroid.com JQueryMobile http://jquerymobile.com Vitamio(多媒体开...

1
39
发表了博客
2016/07/13 15:10

Web端即时通讯技术盘点:短轮询、Comet、Websocket、SSE

1. 前言 Web端即时通讯技术因受限于浏览器的设计限制,一直以来实现起来并不容易,主流的Web端即时通讯方案大致有4种:传统Ajax短轮询、Comet技术、WebSocket技术、SSE(Server-sent Events)。本文将简要介绍这4种技术的原理,并指出各自的异同点、优缺点等。 2. 学习交流 - 更多即时通讯技术资料:http://www.52im.net/forum.php?mod=collection&op=all - 即时通讯开发交流群:215891622[推荐] 3. 概述 1996年IETF HTTP工作组...

0
0
发表了博客
2018/09/11 01:27

替代或者与 Redis 配合存储十亿级别列表的数据.

http://ssdb.io/docs/zh_cn/index.html 用户案例 如果你在生产环境中使用 SSDB, 欢迎你给我发邮件(ssdb#udpwork.com), 我很愿意把你加入到下面的用户列表中. 邮件中请包含如下信息: 产品/公司/团队名称 LOGO(作为附件) 网站链接 公司/产品介绍 SSDB的使用简介, 作用描述 懒投资 懒投资 是由源码资本及中国福布斯富豪夏佐全先生联手投资的优质理财平台. 懒投资使用 SSDB 存储会话 Session, 网站定制, 缓存等数据, 并作为消息队列...

0
0
发表了博客
2016/03/11 15:50

2014年国人开发的最热门的开源软件TOP 100

不知道从什么时候开始,很多一说起国产好像就非常愤慨,其实大可不必。做开源中国六年有余,这六年时间国内的开源蓬勃发展,从一开始的使用到贡献,到推出自己很多的开源软件,而且还有很多软件被国外的认可。中国是开源不可忽视的力量。 而我们这个榜单也是从这些国人开发、主要参与开发或者基于国外开源软件进行改进并形成独立版本的软件中,根据该软件的访问、收藏、下载等多个角度,从而得出前 100 名最受欢迎的开源软件。我...

0
24
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了问答
2014/07/29 09:37

HTTP 长连接技术 Comet

人们常常提到”Comet”, 或者”Web 服务器推”, “HTTP 长连接”, 事实上, 他们指的是同一件东西, 可以统称为 Comet 技术. 但是, Comet 技术又不是单独的一种东西, 而解决某一个问题的许多技术的统称. 要解决的问题是 Web 服务器向浏览器实时推送数据, 而解决方案有很多种. 最经典的方案是 AJAX 轮询, 这种方案和”推”技术毫无关系, 只是由于轮询的间隔比较短, 如一两秒, 便给了用户实时的错觉. 新下来是安装浏览器插件, 如 Ac...

10
21
发表了问答
2013/11/25 17:12

整合 icomet 和 nginx

假如你已经有了一个网站, 域名是 www.test.com, 你想让 icomet 运行在同一台机器上 80 端口上. 让 icomet 运行于 80 端口, 可以避免被某些防火墙拦截. 整个 icomet 和 nginx 后, 让实时推送技术与你的网站合为一个整体. 你只需要简单配置 nginx 即可达到这个目的. location ~ ^/icomet/.* {   rewrite ^/icomet/(.*) /$1 break;   proxy_read_timeout 60;   proxy_connect_timeout 60;   proxy_pass http://127.0.0.1:8100; }...

4
5
发表了问答
2015/07/30 19:46

iComet支持用户是否在线吗

iComet支持用户是否在线吗,做消息推送怎么判断用户是否在线

1
0
2015/03/27 09:50

icomet都支持哪些终端?

icomet除支持浏览器外,是否支持android、ios、cs桌面型程序?谢谢

3
0
发表了问答
2014/08/09 22:00

icomet 百万的测试数据 是什么机器来的

@ideawu 你好,想跟你请教个问题:我是想问一下 一个测试环境怎样

2
0
发表了问答
2014/08/10 12:58

icomet可以运行在windows下吗?怎么找不到解决方法?

看到osc的项目首页上: 授权协议: 未知 开发语言: C/C++ PHP JavaScript HTML/CSS 操作系统: Windows Linux iPhone/iPad/iPod 收录时间: ideawu -> 2013年09月19日 (国产软件 or 国人参与) 可是没有说明windows上怎么运行,请问该怎么做?

2
0
发表了问答
2013/09/30 18:55

使用 icomet 开发 Web 即时聊天功能

icomet 服务器自带的 js 库, 可用于开发基于 Web 的即时聊天功能, 或者接受服务器推. 使用方法如下: var comet = new iComet({     sign_url: 'http://' + app_host + '/sign?obj=' + obj,     sub_url: 'http://' + icomet_host + '/sub',     sub_callback: function(msg){         // 收到服务器推         alert(msg.content);     } });...

19
9
发表了问答
2013/12/22 19:53

icomet有没有清除某个频道消息的方法?

icomet有没有清除某个频道消息的方法? 在一个频道里消息很多,有没有方法可以 一次性把这些消息全部清除?

13
0
发表了问答
2014/04/20 21:34

iComet 的一个应用场景

iComet 是我做的另一个开源项目, 已经有不少朋友将 iComet 应用到了 Web IM, 移动 App 等应用的线上生产环境, 前几天还有一位朋友帮忙开发并开源了 iComet 的 Java/Android SDK. 最近在做一个手机端 App 与桌面 PC 程序联动的项目, 简单来说, 这个软件就是要在手机上进行操作, 并立即根据操作的结果更新 PC 上的程序的响应. 例如在手机上点击了一个按钮, 就要在 PC 上自动打开某个窗口. 其中一个重要的步骤便是从服务器下发指令...

4
6
发表了问答
2014/05/04 13:28

icomet怎么给订阅添加权限控制

@ideawu 你好,想跟你请教个问题:怎么给订阅添加权限控制 我在web中使用到了icomet,但是为了控制订阅的有效性,我需要判断用户是否有权限订阅,细化到某个主题是否有权限订阅等。 保证推送的安全,和无效的订阅过多,这样的情况下是否有什么好的解决方法? 使用和修改了demo/web/chat.html,看https://github.com/ideawu/icomet/wiki 理解如下: 1.使用sign创建消息订阅主题,没有被创建的是不可以被订阅的。 2.使用sub接收通道...

2
0
发表了问答
2013/09/20 22:00

构建C1000K的服务器(2) – 实现百万连接的comet服务器

构建C1000K的服务器(2) – 实现百万连接的comet服务器 这是关于 C1000K 序列文章的第二篇, 在前一篇文章 构建C1000K的服务器(1) – 基础 中, 介绍了支持 C1000K 的 Linux 系统的内核参数调整和系统设置. 在本篇文章中, 将对一个真正的应用服务器做 C1000K 测试. Comet 服务器是一类逻辑相对简单, 需要高并发连接的服务器. Comet 在网站系统中的应用非常广泛, 可以见这篇日志的介绍: http://www.ideawu.net/blog/archives/737.h...

9
24
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
1 评论
412 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部