[ANN]Uniqush: 服务器端手机推送平台

299 views
Skip to first unread message

mon...@gmail.com

unread,
Dec 25, 2011, 5:41:10 PM12/25/11
to golang...@googlegroups.com
Hi all,

本来说早点发这邮件,但是一直在忙别的,就没来及。看过我之前的邮件的人,想
必已经知道这个项目了,这个thread重点讨论一下uniqush这个软件。我还会再发
一个thread,分享一下我用go语言的心得。

= 概述 =
- 名称:uniqush
- 主页:http://uniqush.org
- 代码:http://github.com/monnand/uniqush
- 许可证:Apache License 2.0
- 标签:手机推送, Golang, C2DM, APNS, Android, iOS

= 功能描述 =

更清晰的配图版功能描述在这里: http://uniqush.org/wiki/UniqushStory

目前的主要智能手机平台(Android, iOS, BlackBerry, Windows Phone)都会提
供针对各自平台的推送服务。简单说来,这种服务的工作方式是:

第三方App服务器有一些消息,需要推送给手机上的App -> 第三方App服务器把消
息发送给特定平台的云服务(推送服务) -> 该云将消息推送到客户手机

这种方式的确简化了第三方服务器的开发,但是如果需要支持多个平台,则需要针
对各自平台做相应调整。Uniqush目前主要工作是在第三方服务器与各自平台的云
服务之间建立起一套统一的接口,这样第三方服务器就可以不用修改,而支持更多
的只能手机推送平台。

注意:uniqush是一个*软件*,而*不是*一个推送服务。换句话说,uniqush的用户
需要在自己的服务器上运行uniqush。uniqush.org并不提供任何推送服务(好吧,
这么说似乎有点多余,不过的确有好多人误以为如此)。

= 第三方依赖 =

目前在github上有两个branch,分别针对当前go的release版本和go的weekly版
本。需要依赖的第三方数据库是redis;依赖的第三方库包括redis.go和goconf。

redis.go的正式版本已经无法用最新的go release编译,为此我fork了redis.go这
个项目。代码在http://github.com/monnand/redis.go 上。同样是两个branch,
分别对应go的最新release和weekly版本。大家都知道,最近go的weekly变化很
大,是为了向go1转。所以weekly和master这两个branch也会差别较大。

goconf的官方版可以支持go的最新release(r60.3)。如果用weekly版本的话,需
要gofix再手动改些东西。我手头已经有了修改,但是鉴于goconf目前还比较活
跃,就没再fork出另外一个代码库。

= 代码成熟度 =

这个项目是在今年8月底开始开发,9月份正式实现了现有功能,十一的时候接口做
过一次大调整,之后就是bug fix,用gofix来跟进最新版的go,还有就是提高性能
(加入对象池,缓存等等)。

目前支持android和iOS两个平台的推送。本来打算再加入对windows phone的支
持,但是鉴于手头没搞到设备,只好暂时放弃了。个人认为,代码结构还算说得过
去,所以再加入一个平台的支持不会有啥大改动。

现在还没有做过大规模的测试,但是基本都可以按预期实现相应功能。

基本说来,俺对自己代码还有点信心。

= 项目知名度 =

零,或者约等于零。原因大约是这样的:
- 只是在golang的列表上发过一个ANN,还有就是在几个朋友圈子里内部聊过
- 本来计划11月左右在各个社区里说说这项目,可后来要么是我太忙,要么是看到
了go1的消息,总之,我打算改变计划,等Go1了(但愿Go1不要成为下一个Perl6)
- Go语言变化太快——准确说,是标准库变化,尤其是最近的几个weekly版本,已经
无法单纯用gofix来升级代码了,必须手动修改一些代码。我还是希望等go逐渐稳
定下来,在向其他社区宣传。目前基本就集中在go社区和朋友圈子里。

= 项目未来发展计划 =

- 不断跟着Go的升级而更新代码,直到Go1推出
- 在推出Go1之后,在其他社区内发布消息,并着手开发对windows phone的支持——
好吧,我忽视了黑莓。但是由于黑莓的推送需要第三方安装SDK,这就让俺犹豫了。
- 目前的uniqush只是实现了我计划中的一半功能,另外一半还在设计中。这个我
们可以之后聊。
- 除了服务器端代码外,还要实现各个手机端的开发库,简化手机App的开发

= 总结 =

好了,如果各位对这个项目感兴趣,欢迎参观代码。注意:github上的代码是最新的。

欢迎各种意见建议板砖西红柿鸡蛋。

本Thread旨在讨论针对uniqush的问题。关于我个人对于Go开发的心得体会感想意
见,我会再发一个thread。希望大伙别OT。

Regards,
-Monnand

bor...@gmail.com

unread,
Dec 25, 2011, 9:11:10 PM12/25/11
to golang...@googlegroups.com
谢谢分享,回头研究研究。

想问一下uniqush是通过什么方式推送到手持设备的? 长连接? 还是其他方式.


--
来自: Golang China 中文Go语言技术邮件列表
发言: golang...@googlegroups.com
在线: http://groups.google.com/group/golang-china?hl=zh-CN



--
Jiang Bian
http://www.wifihack.net/
http://golang-china.org/

mon...@gmail.com

unread,
Dec 25, 2011, 9:48:57 PM12/25/11
to golang...@googlegroups.com
bor...@gmail.com wrote, On 12/25/2011 09:11 PM:
> лл���?��ͷ�о��о���
>
> ����һ�� uniqush��ͨ��ʲô��ʽ���͵��ֳ��豸�ģ� �����ӣ� ��������ʽ.

- ���ڳ���������ֻ�ƽ̨����Android, iOS, BlackBerry, Windows Phone������
�����ṩһ���Ʒ���ר����������Ϣ����˵��GoogleΪandroidά����һ����
��C2DM�ķ���Cloud to Device Messaging����ƻ��Ķ�Ӧ�����APNS��Apple
Push Notification Service���������������Ҫ���ģ��Ǹ�ݿͻ��˵�ƽ̨��
���ӵ���Ӧ���ƣ��ٷ�����Ϣ��uniqush���ڸ����ƺ͵�������������м䣬��
����һ��ͳһ�ӿ�
- ���ڳ����ӣ��Ժ���ܻ�֧�֡�������Ϊ��������������ߣ�Ӧ�����ȿ���ʹ
�ö�Ӧƽ̨�����ͷ���ԭ��
* ���ٿͻ����ܺģ��ͻ��˲���Ϊÿ����Ҫ���͵�appά��һ����̨���
* �ɿ�����ȫ������Ӧ����ˣ�
* �ӿ�ͳһ

���幦�ܲμ� http://uniqush.org/wiki/UniqushStory

Regards,
-Monnand


>
> 2011/12/26 mon...@gmail.com <mailto:mon...@gmail.com>
> <mon...@gmail.com <mailto:mon...@gmail.com>>
>
> Hi all��
>
> ����˵��㷢���ʼ�������һֱ��æ��ģ���û������ ������֮ǰ���ʼ���
> �ˣ��� ���Ѿ�֪�������Ŀ�ˣ� ���thread�ص�����һ��uniqush�����
> ���� �һ����ٷ� һ��thread������һ������go���Ե��ĵá�
>
> = ���� =
> - ��ƣ�uniqush
> - ��ҳ��http://uniqush.org
> - ���룺http://github.com/monnand/ uniqush
> <http://github.com/monnand/uniqush>
> - ���֤��Apache License 2.0
> - ��ǩ���ֻ�����, Golang, C2DM, APNS, Android, iOS
>
> = �������� =
>
> ���������ͼ�湦����������� http://uniqush.org/wiki/ UniqushStory
> <http://uniqush.org/wiki/UniqushStory>
>
> Ŀǰ����Ҫ�����ֻ�ƽ̨��Android, iOS, BlackBerry, Windows Phone����
> ���� ����Ը���ƽ̨�����ͷ��񡣼�˵�������ַ���Ĺ�����ʽ�ǣ�
>
> ����App��������һЩ��Ϣ����Ҫ���͸��ֻ��ϵ�App -> ����App������
> ���� Ϣ���͸��ض�ƽ̨���Ʒ������ͷ��� -> ���ƽ���Ϣ���͵��ͻ��ֻ�
>
> ���ַ�ʽ��ȷ���˵���������Ŀ����� ���������Ҫ֧�ֶ��ƽ̨����
> ��Ҫ�� �Ը���ƽ̨����Ӧ���� UniqushĿǰ��Ҫ�������ڵ����������
> ����ƽ̨���� ����֮�佨����һ��ͳһ�Ľӿڣ� �������������Ϳ��Բ�
> ���޸ģ���֧�ָ�� ��ֻ���ֻ�����ƽ̨��
>
> ע�⣺uniqush��һ��*���*����*����*һ�����ͷ��� ���仰˵��uniqush
> ���û� ��Ҫ���Լ��ķ�����������uniqush��uniqush. org
> <http://uniqush.org>�����ṩ�κ����ͷ��񣨺ðɣ� ��ô˵�ƺ��е��
> �࣬�����ȷ�кö�������Ϊ��ˣ���
>
> = �������� =
>
> Ŀǰ��github��������branch�� �ֱ���Ե�ǰgo��release�汾��go��weekly
> �� ������Ҫ�����ĵ�����ݿ���redis�� �����ĵ�������redis.go��
> goconf��
>
> redis.go����ʽ�汾�Ѿ��޷������µ�go release���룬Ϊ����fork��
> redis.go�� ����Ŀ��������http://github.com/ monnand/redis.go
> <http://github.com/monnand/redis.go> �ϡ�ͬ��������branch�� �ֱ��Ӧ
> go������release��weekly�汾�� ��Ҷ�֪�������go��weekly�仯�� ��
> ��Ϊ����go1ת�� ����weekly��master������branchҲ����ϴ� ��
>
> goconf�Ĺٷ������֧��go������release�� r60.3���������weekly�汾��
> ������ Ҫgofix���ֶ���Щ����������ͷ�Ѿ������޸ģ� ���Ǽ���goconfĿ
> ǰ���Ƚϻ� Ծ����û��fork������һ������⡣
>
> = �������� =
>
> �����Ŀ���ڽ���8�µ׿�ʼ������9�·���ʽʵ�������й��ܣ� ʮһ��ʱ��
> �ӿ��� ��һ�δ����֮�����bug fix����gofix��������°��go������
> ����������� ���������أ�����ȵȣ���
>
> Ŀǰ֧��android��iOS����ƽ̨�����͡� ���������ټ����windows phone��
> ֧ �֣����Ǽ�����ͷû�㵽�豸��ֻ����ʱ�����ˡ�������Ϊ�� ����ṹ��
> ��˵�ù� ȥ�������ټ���һ��ƽ̨��֧�ֲ�����ɶ��Ķ���
>
> ���ڻ�û��������ģ�IJ��ԣ� ���ǻ����԰�Ԥ��ʵ����Ӧ���ܡ�
>
> ��˵���������Լ����뻹�е����ġ�
>
> = ��Ŀ֪��� =
>
> �㣬����Լ�����㡣ԭ���Լ������ģ�
> - ֻ����golang���б��Ϸ���һ��ANN�� ���о����ڼ�������Ȧ�����ڲ��Ĺ�
> - �����ƻ�11�������ڸ���������˵˵����Ŀ�� �ɺ���Ҫô����̫æ��Ҫô
> �ǿ��� ��go1����Ϣ����֮���Ҵ���ı�ƻ�����Go1�ˣ� ��ԸGo1��Ҫ��Ϊ
> ��һ��Perl6��
> - Go���Ա仯̫�졪��׼ȷ˵���DZ�׼��仯�� ���������ļ���weekly��
> �����Ѿ� �޷�������gofix��������ˣ������ֶ��޸�һЩ���롣 �һ���
> ϣ���go���� ���������������������� Ŀǰ��ͼ�����go�������
> ��Ȧ���
>
> = ��Ŀδ����չ�ƻ� =
>
> - ���ϸ���Go�������´��룬ֱ��Go1�Ƴ�
> - ���Ƴ�Go1֮�������������ڷ�����Ϣ�� �����ֿ�����windows phone��
> ֧�֡��� �ðɣ��Һ����˺�ݮ���������ں�ݮ��������Ҫ����װSDK�� ��
> ���ð���ԥ�ˡ�
> - Ŀǰ��uniqushֻ��ʵ�����Ҽƻ��е�һ�빦�ܣ� ����һ�뻹������С���
> ���� �ǿ���֮���ġ�
> - ���˷������˴����⣬��Ҫʵ�ָ����ֻ�˵Ŀ����⣬ ���ֻ�App�Ŀ���
>
> = �ܽ� =
>
> ���ˣ�����λ�������Ŀ����Ȥ����ӭ�ι۴��롣ע�⣺ github�ϵĴ���
> �����µġ�
>
> ��ӭ����������ש������������
>
> ��Threadּ���������uniqush�����⡣ �����Ҹ��˶���Go�������ĵ�����
> ���� ���һ��ٷ�һ��thread��ϣ�����OT��
>
> Regards,
> -Monnand
>
> --
> ����: Golang China ����Go���Լ����ʼ��б�
> ����: golang...@googlegroups.com
> <mailto:golang...@googlegroups.com>
> ����: http://groups.google.com/ group/golang-china?hl=zh-CN

> --
> ����: Golang China ����Go���Լ����ʼ��б�
> ����: golang...@googlegroups.com
> ����: http://groups.google.com/group/golang-china?hl=zh-CN

bor...@gmail.com

unread,
Dec 25, 2011, 9:50:25 PM12/25/11
to golang...@googlegroups.com
又有weekly版本了, 需要gofix一下。

6g version weekly.2011-12-22 11071

github.com/monnand/redis.go: build failed: exit status 2
cd "/home/border/go/src/pkg/github.com/monnand/redis.go" && "bash gomake -f- install"
6g  -I "/home/border/go/pkg/linux_amd64"  -p github.com/monnand/redis.go -o _go_.6 redis.go 
redis.go:114: undefined: strconv.Atoi64
redis.go:415: undefined: strconv.Itoa64
redis.go:513: undefined: strconv.Itoa64
redis.go:565: undefined: strconv.Itoa64
redis.go:583: undefined: strconv.Itoa64
redis.go:714: undefined: strconv.Uitoa

mon...@gmail.com

unread,
Dec 25, 2011, 10:11:43 PM12/25/11
to golang...@googlegroups.com, bor...@gmail.com
bor...@gmail.com wrote, On 12/25/2011 09:50 PM:
> ����weekly�汾�ˣ� ��Ҫgofixһ�¡�

���

������е�æ��ûʱ�����ڡ���ʵ����go��weekly����̫Ƶ������ǰ���Ӷ��е��
���ˡ�

֮ǰ�Ѿ��Ĺ�ֻ������push��github���ˡ�����Ӧ��û������

ֻ���������weekly�İ汾��goconf����Ҳ��Ҫ�ĸġ�
>
> 6g version weekly.2011-12-22 11071
>
> github.com/monnand/redis.go <http://github.com/monnand/redis.go>: build

> failed: exit status 2
> cd "/home/border/go/src/pkg/github.com/monnand/redis.go

> <http://github.com/monnand/redis.go>" && "bash gomake -f- install"


> 6g -I "/home/border/go/pkg/linux_amd64" -p github.com/monnand/redis.go

> <http://github.com/monnand/redis.go> -o _go_.6 redis.go


> redis.go:114: undefined: strconv.Atoi64
> redis.go:415: undefined: strconv.Itoa64
> redis.go:513: undefined: strconv.Itoa64
> redis.go:565: undefined: strconv.Itoa64
> redis.go:583: undefined: strconv.Itoa64
> redis.go:714: undefined: strconv.Uitoa
>
>
>
> --
> Jiang Bian
> http://www.wifihack.net/
> http://golang-china.org/
>

mon...@gmail.com

unread,
Dec 25, 2011, 10:38:22 PM12/25/11
to golang...@googlegroups.com
bor...@gmail.com wrote, On 12/25/2011 09:50 PM:
> ����weekly�汾�ˣ� ��Ҫgofixһ�¡�
>
> 6g version weekly.2011-12-22 11071
>

���ʹ��weekly�İ汾��goconf���޷�����ģ�Ϊ������clone��һ����Ŀ��ר��
�����weekly�汾��

���ڴ�ﶼ������һ�壬ϲ����weekly�����Ѿ��޸���uniqush�Ĵ��롣����
uniqush.org �ϵİ�װ�ĵ���װ�Ϳ����ˡ�

��Ȼ���������release�汾��Ҳû�����⡣���Ѿ��Ѹ��ָ����õ�tag�����ú�
�ˡ���Ը��α��ٳ�ɶ�����ˡ�

�����⻶ӭ���ʼ�

Regards,
-Monnand
> github.com/monnand/redis.go <http://github.com/monnand/redis.go>: build

> failed: exit status 2
> cd "/home/border/go/src/pkg/github.com/monnand/redis.go

> <http://github.com/monnand/redis.go>" && "bash gomake -f- install"


> 6g -I "/home/border/go/pkg/linux_amd64" -p github.com/monnand/redis.go

> <http://github.com/monnand/redis.go> -o _go_.6 redis.go


> redis.go:114: undefined: strconv.Atoi64
> redis.go:415: undefined: strconv.Itoa64
> redis.go:513: undefined: strconv.Itoa64
> redis.go:565: undefined: strconv.Itoa64
> redis.go:583: undefined: strconv.Itoa64
> redis.go:714: undefined: strconv.Uitoa
>
>
>
> --
> Jiang Bian
> http://www.wifihack.net/
> http://golang-china.org/
>

gix...@gmail.com

unread,
Dec 25, 2011, 10:51:34 PM12/25/11
to golang...@googlegroups.com
谢谢分享,赞一个。 

在 2011年12月26日 上午11:38,mon...@gmail.com <mon...@gmail.com>写道:
bor...@gmail.com wrote, On 12/25/2011 09:50 PM:
> 又有weekly版本了, 需要gofix一下。
>
> 6g version weekly.2011-12-22 11071
>

如果使用weekly的版本,goconf是无法编译的,为此我又clone了一个项目,专门
来针对weekly版本。

鉴于大伙都是折腾一族,喜欢用weekly,我已经修改了uniqush的代码。按照
uniqush.org 上的安装文档安装就可以了。

当然,如果你用release版本,也没有问题。我已经把各种该设置的tag都设置好
了。但愿这次别再出啥岔子了。

有问题欢迎发邮件


Regards,
-Monnand
> github.com/monnand/redis.go <http://github.com/monnand/redis.go>: build
> failed: exit status 2
> cd "/home/border/go/src/pkg/github.com/monnand/redis.go
> <http://github.com/monnand/redis.go>" && "bash gomake -f- install"
> 6g -I "/home/border/go/pkg/linux_amd64" -p github.com/monnand/redis.go
> <http://github.com/monnand/redis.go> -o _go_.6 redis.go
> redis.go:114: undefined: strconv.Atoi64
> redis.go:415: undefined: strconv.Itoa64
> redis.go:513: undefined: strconv.Itoa64
> redis.go:565: undefined: strconv.Itoa64
> redis.go:583: undefined: strconv.Itoa64
> redis.go:714: undefined: strconv.Uitoa
>
>
>
> --
> Jiang Bian
> http://www.wifihack.net/
> http://golang-china.org/
>
> --

laputa

unread,
Dec 26, 2011, 1:22:10 AM12/26/11
to golang...@googlegroups.com
感谢分享!:)

liigo

unread,
Dec 26, 2011, 4:46:58 AM12/26/11
to golang...@googlegroups.com

既然 Uniqush是一个软件而不是一个服务, 那么谁作为服务提供商呢? 如果软件开发商各自为政在自己的服务器上运行uniqush提供服务, 那手机客户端不知道要保持多少"长连接"了, 这并未解决它要解决的问题。目前只能期待出现一个被广泛认可的uniqush服务提供商, 大多数软件开发者都统一采用。而这对服务提供者要求很高(网络响应速度及服务稳定性),最好是谷歌苹果这种大公司才有实力提供。

Zuyang Kou

unread,
Dec 26, 2011, 5:06:01 AM12/26/11
to golang...@googlegroups.com
Uniqush 是为了统一不同平台推送接口存在的,比如编码一次就可以同时支持 APNs 和 C2DM,自己不直接跟手机通信。

2011/12/26 liigo <com....@gmail.com>:

--
Code is poetry.

mon...@gmail.com

unread,
Dec 26, 2011, 5:18:11 AM12/26/11
to golang...@googlegroups.com
liigo wrote, On 12/26/2011 04:46 AM:
> 既然 Uniqush是一个软件而不是一个服务, 那么谁作为服务提供商呢? 如果软件开
> 发商各自为政在自己的服务器上运行uniqush提供服务, 那手机客户端不知道要保
> 持多少"长连接"了, 这并未解决它要解决的问题。目前只能期待出现一个被广泛认
> 可的uniqush服务提供商, 大多数软件开发者都统一采用。而这对服务提供者要求
> 很高(网络响应速度及服务稳定性),最好是谷歌苹果这种大公司才有实力提供。
>

我觉得要么是我没理解你的意思,要么是我没传达好我的意图,总之,我们之间沟
通出现错误了。

- 谁该提供服务就继续提供服务。苹果依然提供APNS服务,google依然提供C2DM服
务,uniqush本身并不是取代这些服务。
- 手持设备不会直接和uniqush建立*任何*长的或短的链接,它们继续和各自平台
的服务提供者建立链接——android连C2DM去,iOS的连APNS去,windows phone连
MSXXX(我忘了微软那个名字了……)去,blackberry连他们家服务器去。
- 第三方服务器运行uniqush是为了和各自平台的云建立连接,以此*间接*向手持
设备推送服务

如果没有明白上面的内容,或者觉得好像明白,或者觉得非常明白了,都请移步这
里:http://uniqush.org/wiki/UniqushStory 看看你明白的东西是不是我要说的
东西。

如果以上还没说清楚,我就给一个具体例子。

我开发了一个手持设备操作系统,叫Monnand OS,之后提供了一个推送的云服务,
叫Monnand Push Service。为什么推出这么个云?因为如果每个软件都建立自己和
它们服务器的长连接,就会有太多的资源浪费。如果想给运行Monnand OS的设备推
送消息,就需要和Monnand Push Service建立连接,把消息给Monnand Push
Service。Monnand Push Service实际上也是和Monnand OS设备建立了一个长连
接,但*各种*运行其上的app都使用这个连接进行推送,Monnand Push Service会
把各个第三方服务器的消息都推给指定的运行了Monnand OS的设备,Monnand OS再
把消息按照来源转发给相应App。简单说来*一个*长连接,第三方服务通过平台提
供商的云服务来*间接*推送消息。

之后ZQ大妈也推出了一个手机操作系统,叫ZQOS,也出于同样的原因,推出了推送
服务,叫ZQ Notification Service。

现在我们有两个推送服务提供者,分别是Monnand Push Service和ZQ
Notification Service。如果我要开发一个软件,需要提供推送服务,那么我需要
针对这两个平台编写不同代码。如果运行uniqush,它可以运行在推送服务提供者
和第三方App服务器之间,这样第三方App服务器就可以用一套统一的接口和不同推
送服务进行通信。

我不知道这么解释是不是足够清楚了。老实说,网站上的配图说明我觉得更清晰一些。

感谢ZQ大妈的友情客串!

Regards,
-Monnand

> 在 2011-12-26 上午6:41,"mon...@gmail.com <mailto:mon...@gmail.com>"
> <mon...@gmail.com <mailto:mon...@gmail.com>>写道:


>
> Hi all,
>
> 本来说早点发这邮件,但是一直在忙别的,就没来及。 看过我之前的邮件的
> 人,想 必已经知道这个项目了, 这个thread重点讨论一下uniqush这个软

> 件。 我还会再发 一个thread,分享一下我用go语言的心得。


>
> = 概述 =
> - 名称:uniqush
> - 主页:http://uniqush.org
> - 代码:http://github.com/monnand/ uniqush
> <http://github.com/monnand/uniqush>
> - 许可证:Apache License 2.0
> - 标签:手机推送, Golang, C2DM, APNS, Android, iOS
>
> = 功能描述 =
>
> 更清晰的配图版功能描述在这里: http://uniqush.org/wiki/ UniqushStory
> <http://uniqush.org/wiki/UniqushStory>
>
> 目前的主要智能手机平台(Android, iOS, BlackBerry, Windows Phone)都
> 会提 供针对各自平台的推送服务。简单说来,这种服务的工作方式是:
>
> 第三方App服务器有一些消息,需要推送给手机上的App -> 第三方App服务器
> 把消 息发送给特定平台的云服务(推送服务) -> 该云将消息推送到客户手机
>
> 这种方式的确简化了第三方服务器的开发, 但是如果需要支持多个平台,则
> 需要针 对各自平台做相应调整。 Uniqush目前主要工作是在第三方服务器与
> 各自平台的云 服务之间建立起一套统一的接口, 这样第三方服务器就可以不
> 用修改,而支持更多 的只能手机推送平台。
>
> 注意:uniqush是一个*软件*,而*不是*一个推送服务。 换句话说,uniqush
> 的用户 需要在自己的服务器上运行uniqush。uniqush. org

> <http://uniqush.org>并不提供任何推送服务(好吧, 这么说似乎有点多


> 余,不过的确有好多人误以为如此)。
>
> = 第三方依赖 =
>
> 目前在github上有两个branch, 分别针对当前go的release版本和go的weekly
> 版 本。需要依赖的第三方数据库是redis; 依赖的第三方库包括redis.go和
> goconf。
>
> redis.go的正式版本已经无法用最新的go release编译,为此我fork了
> redis.go这 个项目。代码在http://github.com/ monnand/redis.go

> <http://github.com/monnand/redis.go> 上。同样是两个branch, 分别对应
> go的最新release和weekly版本。 大家都知道,最近go的weekly变化很 大,

> <mailto:golang...@googlegroups.com>
> 在线: http://groups.google.com/ group/golang-china?hl=zh-CN
> <http://groups.google.com/group/golang-china?hl=zh-CN>
>

liigo

unread,
Dec 26, 2011, 5:28:46 AM12/26/11
to golang...@googlegroups.com

恩,经你仔细讲解我想我大概明白了,谢谢。之前是我理解有误。


   在线: http://groups.google.com/ group/golang-china?hl=zh-CN
   <http://groups.google.com/group/golang-china?hl=zh-CN>

--
来自: Golang China 中文Go语言技术邮件列表
发言: golang...@googlegroups.com
在线: http://groups.google.com/group/golang-china?hl=zh-CN

mon...@gmail.com

unread,
Dec 26, 2011, 5:45:45 AM12/26/11
to golang...@googlegroups.com, liigo
liigo wrote, On 12/26/2011 05:28 AM:
> ����������ϸ���������Ҵ�������ˣ�лл��֮ǰ�����������
>

������

̹�׽�����Ϊ����լ������ƽ�dz������Լ�����������������������־���������
��ĵط������ż��ϻ�

�������Zuyang Kou���ڶ������ˣ������Ժ�����˰��ҽ����ˡ���̤ʵ�ˡ�

Regards,
-Monnand

> �� 2011-12-26 ����6:18��"mon...@gmail.com <mailto:mon...@gmail.com>"
> <mon...@gmail.com <mailto:mon...@gmail.com>>���


>
> liigo wrote, On 12/26/2011 04:46 AM:
>

> ��Ȼ Uniqush��һ���������һ������, ��ô˭��Ϊ�����ṩ����? ��
> �������
> ���̸���Ϊ�����Լ��ķ�����������uniqush�ṩ����, ���ֻ�ͻ��˲�
> ֪��Ҫ��
> �ֶ���"������"��, �Ⲣδ�����Ҫ��������⡣Ŀǰֻ���ڴ����һ��
> ���㷺��
> �ɵ�uniqush�����ṩ��, �������������߶�ͳһ���á�����Է�����
> ����Ҫ��
> �ܸ�(������Ӧ�ٶȼ������ȶ���), ����ǹȸ�ƻ�����ִ�˾����ʵ��
> �ṩ��
>
>
> �Ҿ���Ҫô����û��������˼��Ҫô����û������ҵ���ͼ�� ��֮������
> ֮�乵
> ͨ���ִ����ˡ�
>
> - ˭���ṩ����ͼ����ṩ����ƻ����Ȼ�ṩAPNS���� google��Ȼ�ṩ
> C2DM��
> ��uniqush���?����ȡ����Щ����
> - �ֳ��豸����ֱ�Ӻ�uniqush����*�κ�*���Ļ�̵����ӣ� ���Ǽ���͸���ƽ̨
> �ķ����ṩ�߽������ӡ���android��C2DMȥ�� iOS����APNSȥ��windows phone��
> MSXXX��������΢���Ǹ������ˡ�����ȥ�� blackberry�����Ǽҷ�����ȥ��
> - �������������uniqush��Ϊ�˺͸���ƽ̨���ƽ������ӣ� �Դ�*���*���ֳ�
> �豸���ͷ���
>
> ���û��������������ݣ����߾��ú������ף� ���߾��÷dz������ˣ�����
> �Ʋ���
> �http://uniqush.org/wiki/ UniqushStory
> <http://uniqush.org/wiki/UniqushStory> ���������׵Ķ����Dz�����Ҫ˵��
> ������
>
> ������ϻ�û˵������Ҿ͸�һ���������ӡ�
>
> �ҿ�����һ���ֳ��豸����ϵͳ����Monnand OS��֮���ṩ��һ�����͵��Ʒ���
> ��Monnand Push Service��Ϊʲô�Ƴ���ô���ƣ� ��Ϊ���ÿ�����������
> �Լ���
> ���Ƿ������ij����ӣ��ͻ���̫�����Դ�˷ѡ� ����������Monnand OS��
> �豸��
> ����Ϣ������Ҫ��Monnand Push Service�������ӣ�����Ϣ��Monnand Push
> Service��Monnand Push Serviceʵ����Ҳ�Ǻ�Monnand OS�豸������һ������
> �ӣ���*����*�������ϵ�app��ʹ��������ӽ������ͣ� Monnand Push Service��
> �Ѹ����������������Ϣ���Ƹ�ָ����������Monnand OS���豸��Monnand OS��
> ����Ϣ������Դת������ӦApp����˵��*һ��*�����ӣ� �������ͨ��ƽ̨��
> ���̵��Ʒ�����*���*������Ϣ��
>
> ֮��ZQ����Ҳ�Ƴ���һ���ֻ����ϵͳ����ZQOS�� Ҳ����ͬ���ԭ���Ƴ�
> ������
> ���񣬽�ZQ Notification Service��
>
> �����������������ͷ����ṩ�ߣ��ֱ���Monnand Push Service��ZQ
> Notification Service�������Ҫ����һ���������Ҫ�ṩ���ͷ��� ��ô
> ����Ҫ
> ���������ƽ̨��д��ͬ���롣�������uniqush�� ��������������ͷ����ṩ��
> �͵���App������֮�䣬 �������App�������Ϳ�����һ��ͳһ�Ľӿں�
> ��ͬ��
> �ͷ������ͨ�š�
>
> �Ҳ�֪����ô�����Dz����㹻����ˡ���ʵ˵�� ��վ�ϵ���ͼ˵���Ҿ��ø�
> ����һЩ��
>
> ��лZQ���������ʹ���
>
> Regards,
> -Monnand
>
> �� 2011-12-26 ����6:41��"mon...@gmail.com
> <mailto:mon...@gmail.com> <mailto:mon...@gmail.com

> <mailto:mon...@gmail.com <mailto:mon...@gmail.com>>>���


>
> Hi all��
>
> ����˵��㷢���ʼ�������һֱ��æ��ģ���û������ ������֮ǰ���ʼ���
> �ˣ��� ���Ѿ�֪�������Ŀ�ˣ� ���thread�ص�����һ��uniqush�����
> ���� �һ����ٷ� һ��thread������һ������go���Ե��ĵá�
>
> = ���� =
> - ��ƣ�uniqush
> - ��ҳ��http://uniqush.org
> - ���룺http://github.com/monnand/ uniqush

> - ���֤��Apache License 2.0
> - ��ǩ���ֻ�����, Golang, C2DM, APNS, Android, iOS
>
> = �������� =
>
> ���������ͼ�湦����������� http://uniqush.org/wiki/ UniqushStory

> Ŀǰ����Ҫ�����ֻ�ƽ̨��Android, iOS, BlackBerry, Windows Phone����
> ���� ����Ը���ƽ̨�����ͷ��񡣼�˵�������ַ���Ĺ�����ʽ�ǣ�
>
> ����App��������һЩ��Ϣ����Ҫ���͸��ֻ��ϵ�App -> ����App������

> ���� Ϣ���͸��ض�ƽ̨���Ʒ������ͷ��� -> ���ƽ���Ϣ���͵���
> ���ֻ�

> --
> ����: Golang China ����Go���Լ����ʼ��б�
> ����: golang...@googlegroups.com

> <mailto:golang...@googlegroups.com>
> <mailto:golang-china@ googlegroups.com


> <mailto:golang...@googlegroups.com>>
> ����: http://groups.google.com/ group/golang-china?hl=zh-CN

> ����: Golang China ����Go���Լ����ʼ��б�
> ����: golang...@googlegroups.com

> <mailto:golang...@googlegroups.com>
> ����: http://groups.google.com/ group/golang-china?hl=zh-CN
> <http://groups.google.com/group/golang-china?hl=zh-CN>
>
>
> --

> ����: Golang China ����Go���Լ����ʼ��б�
> ����: golang...@googlegroups.com

> <mailto:golang...@googlegroups.com>
> ����: http://groups.google.com/ group/golang-china?hl=zh-CN
> <http://groups.google.com/group/golang-china?hl=zh-CN>
>
> --

Yili Zhao

unread,
Dec 26, 2011, 9:02:16 AM12/26/11
to golang...@googlegroups.com
在 2011年12月26日 上午6:41,mon...@gmail.com <mon...@gmail.com> 写道:
> 目前支持android和iOS两个平台的推送。本来打算再加入对windows phone的支
> 持,但是鉴于手头没搞到设备,只好暂时放弃了。个人认为,代码结构还算说得过 去,所以再加入一个平台的支持不会有啥大改动。

我正打算买一个Nokia Lumia 710,到时候可以测试一下。


> 了go1的消息,总之,我打算改变计划,等Go1了(但愿Go1不要成为下一个Perl6)

从weekly更新频繁的程度来看,Go1应该不会成为下一个Perl6 :)

--
Yili Zhao

东郭偃

unread,
Dec 26, 2011, 9:23:04 AM12/26/11
to golang...@googlegroups.com
是不是说, uniqush 在服务器上统一收取各APP服务器端发来的信息,然后一起推送到手机上?

在 2011年12月26日 下午6:45,mon...@gmail.com <mon...@gmail.com>写道:
liigo wrote, On 12/26/2011 05:28 AM:
> 恩,经你仔细讲解我想我大概明白了,谢谢。之前是我理解有误。
>

不客气!

坦白讲,作为技术宅,俺生平非常担心自己表达能力。尤其是遇上这种经常被人误
解的地方,就着急上火。

还好你和Zuyang Kou现在都明白了,起码以后多俩人帮我解释了。俺踏实了。

Regards,
-Monnand

> 在 2011-12-26 下午6:18,"mon...@gmail.com <mailto:mon...@gmail.com>"
> <mon...@gmail.com <mailto:mon...@gmail.com>>写道:

>
>     liigo wrote, On 12/26/2011 04:46 AM:
>
>         既然 Uniqush是一个软件而不是一个服务, 那么谁作为服务提供商呢? 如
>         果软件开
>         发商各自为政在自己的服务器上运行uniqush提供服务, 那手机客户端不
>         知道要保
>         持多少"长连接"了, 这并未解决它要解决的问题。目前只能期待出现一个
>         被广泛认
>         可的uniqush服务提供商, 大多数软件开发者都统一采用。而这对服务提
>         供者要求
>         很高(网络响应速度及服务稳定性), 最好是谷歌苹果这种大公司才有实力
>         提供。
>
>
>     我觉得要么是我没理解你的意思,要么是我没传达好我的意图, 总之,我们
>     之间沟
>     通出现错误了。
>
>     - 谁该提供服务就继续提供服务。苹果依然提供APNS服务, google依然提供

>     C2DM服
>     务,uniqush本身并不是取代这些服务。
>     - 手持设备不会直接和uniqush建立*任何*长的或短的链接, 它们继续和各自平台
>     的服务提供者建立链接——android连C2DM去, iOS的连APNS去,windows phone连
>     MSXXX(我忘了微软那个名字了……)去, blackberry连他们家服务器去。
>     - 第三方服务器运行uniqush是为了和各自平台的云建立连接, 以此*间接*向手持
>     设备推送服务
>
>     如果没有明白上面的内容,或者觉得好像明白, 或者觉得非常明白了,都请
>     移步这
>     里:http://uniqush.org/wiki/ UniqushStory
>     <http://uniqush.org/wiki/UniqushStory> 看看你明白的东西是不是我要说的
>
>         在 2011-12-26 上午6:41,"mon...@gmail.com
>         <mailto:mon...@gmail.com> <mailto:mon...@gmail.com
>         <mailto:mon...@gmail.com>>"
>         <mon...@gmail.com <mailto:mon...@gmail.com>
>         <mailto:mon...@gmail.com <mailto:mon...@gmail.com>>>写道:

>
>         Hi all,
>
>         本来说早点发这邮件,但是一直在忙别的,就没来及。 看过我之前的邮件的
>         人,想 必已经知道这个项目了, 这个thread重点讨论一下uniqush这个软
>         件。 我还会再发 一个thread,分享一下我用go语言的心得。
>
>         = 概述 =
>         - 名称:uniqush
>         - 主页:http://uniqush.org
>         - 代码:http://github.com/monnand/ uniqush
>         <http://github.com/monnand/ uniqush

>         - 许可证:Apache License 2.0
>         - 标签:手机推送, Golang, C2DM, APNS, Android, iOS
>
>         = 功能描述 =
>
>         更清晰的配图版功能描述在这里: http://uniqush.org/wiki/ UniqushStory
>         <http://uniqush.org/wiki/ UniqushStory

>         目前的主要智能手机平台(Android, iOS, BlackBerry, Windows Phone)都
>         会提 供针对各自平台的推送服务。简单说来,这种服务的工作方式是:
>
>         第三方App服务器有一些消息,需要推送给手机上的App -> 第三方App服务器
>         把消 息发送给特定平台的云服务(推送服务) -> 该云将消息推送到客
>         户手机
>
>         这种方式的确简化了第三方服务器的开发, 但是如果需要支持多个平台,则
>         需要针 对各自平台做相应调整。 Uniqush目前主要工作是在第三方服务器与
>         各自平台的云 服务之间建立起一套统一的接口, 这样第三方服务器就可以不
>         用修改,而支持更多 的只能手机推送平台。
>
>         注意:uniqush是一个*软件*,而*不是*一个推送服务。 换句话说,uniqush
>         的用户 需要在自己的服务器上运行uniqush。uniqush. org
>         <http://uniqush.org> 并不提供任何推送服务(好吧, 这么说似乎有点多
>         余,不过的确有好多人误以为如此)。
>
>         = 第三方依赖 =
>
>         目前在github上有两个branch, 分别针对当前go的release版本和go的weekly
>         版 本。需要依赖的第三方数据库是redis; 依赖的第三方库包括redis.go和
>         goconf。
>
>         redis.go的正式版本已经无法用最新的go release编译,为此我fork了
>         redis.go这 个项目。代码在http://github.com/ monnand/redis.go
>         <http://github.com/monnand/ redis.go
>         <http://github.com/monnand/redis.go>> 上。同样是两个branch, 分
>         别对应
>         发言: golang...@googlegroups.com
>         <mailto:golang...@googlegroups.com>
>         <mailto:golang-china@ googlegroups.com
>         <mailto:golang...@googlegroups.com>>
>         在线: http://groups.google.com/ group/golang-china?hl=zh-CN
>         <http://groups.google.com/ group/golang-china?hl=zh-CN
>         <http://groups.google.com/group/golang-china?hl=zh-CN>>
>
>         --

>         来自: Golang China 中文Go语言技术邮件列表
>         发言: golang...@googlegroups.com
>         <mailto:golang...@googlegroups.com>
>         在线: http://groups.google.com/ group/golang-china?hl=zh-CN

>     来自: Golang China 中文Go语言技术邮件列表
>     发言: golang...@googlegroups.com
>     <mailto:golang...@googlegroups.com>
>     在线: http://groups.google.com/ group/golang-china?hl=zh-CN

bor...@gmail.com

unread,
Dec 26, 2011, 9:29:32 AM12/26/11
to golang...@googlegroups.com
2011/12/26 东郭偃 <fir...@gmail.com>
是不是说, uniqush 在服务器上统一收取各APP服务器端发来的信息,然后一起推送到手机上?

 
应该是 APP服务器 发送信息给 uniqush , uniqush 再分发给相关的服务提供上(比如: Android 的C2DM, iPhone的APNS), 相关服务再推送给手机客户端. 

wonderfo

unread,
Dec 26, 2011, 9:29:42 AM12/26/11
to golang...@googlegroups.com
嗯,赞叹、学习,谢谢分享! (^_^)

另外提个小事情,monnand你提的帖子,在google讨论组里除主贴外,别的贴子都是乱码,邮件倒是正常的,链接见下:


 上。同样是两个branch, 
>分别对应go的最新release和weekly版本。大家都知道,最近go的weekly变化很 
>大,是为了向go1转。所以weekly和master这两个branch也会差别较大。
>
>goconf的官方版可以支持go的最新release(r60.3)。如果用weekly版本的话,需 
>要gofix再手动改些东西。我手头已经有了修改,但是鉴于goconf目前还比较活 
>跃,就没再fork出另外一个代码库。
>
>= 代码成熟度 =
>
>这个项目是在今年8月底开始开发,9月份正式实现了现有功能,十一的时候接口做 
>过一次大调整,之后就是bug fix,用gofix来跟进最新版的go,还有就是提高性能 
>(加入对象池,缓存等等)。
>
>目前支持android和iOS两个平台的推送。本来打算再加入对windows phone的支 
>持,但是鉴于手头没搞到设备,只好暂时放弃了。个人认为,代码结构还算说得过 
>去,所以再加入一个平台的支持不会有啥大改动。
>
>现在还没有做过大规模的测试,但是基本都可以按预期实现相应功能。
>
>基本说来,俺对自己代码还有点信心。
>
>= 项目知名度 =
>
>零,或者约等于零。原因大约是这样的:
>- 只是在golang的列表上发过一个ANN,还有就是在几个朋友圈子里内部聊过
>- 本来计划11月左右在各个社区里说说这项目,可后来要么是我太忙,要么是看到 
>了go1的消息,总之,我打算改变计划,等Go1了(但愿Go1不要成为下一个Perl6)
>- Go语言变化太快——准确说,是标准库变化,尤其是最近的几个weekly版本,已经 
>无法单纯用gofix来升级代码了,必须手动修改一些代码。我还是希望等go逐渐稳 
>定下来,在向其他社区宣传。目前基本就集中在go社区和朋友圈子里。
>
>= 项目未来发展计划 =
>
>- 不断跟着Go的升级而更新代码,直到Go1推出
>- 在推出Go1之后,在其他社区内发布消息,并着手开发对windows phone的支持—— 
>好吧,我忽视了黑莓。但是由于黑莓的推送需要第三方安装SDK,这就让俺犹豫了。
>- 目前的uniqush只是实现了我计划中的一半功能,另外一半还在设计中。这个我 
>们可以之后聊。
>- 除了服务器端代码外,还要实现各个手机端的开发库,简化手机App的开发
>
>= 总结 =
>
>好了,如果各位对这个项目感兴趣,欢迎参观代码。注意:github上的代码是最新的。
>
>欢迎各种意见建议板砖西红柿鸡蛋。
>
>本Thread旨在讨论针对uniqush的问题。关于我个人对于Go开发的心得体会感想意 
>见,我会再发一个thread。希望大伙别OT。
>
>Regards,
>-Monnand
>
>-- 
>来自: Golang China 中文Go语言技术邮件列表
>发言: golang...@googlegroups.com
>在线: http://groups.google.com/group/golang-china?hl=zh-CN


wonderfo

unread,
Dec 26, 2011, 9:51:00 AM12/26/11
to golang...@googlegroups.com
呵呵,老有同学理解错误,是不是“服务器端手机推送平台”这个名字容易引起误解呀,我个人的粗浅理解,Monnand似乎想提供移动应用的开发套件或中间件,抽象 C2DM 或 APNS 的调用接口只是功能之一,未来还有更多打算。不好意思,初学Go,没有大多时间看 Uniqush 工程本身,只是从邮件信息推测一下,呵呵。 (^_^)

Monnand

unread,
Dec 26, 2011, 1:51:26 PM12/26/11
to golang...@googlegroups.com
@Yili Zhao 我也觉得Go1还是极度有戏的!
@东郭偃, @borderj说的没错,uniqush更倾向于一种中间件。
@wonderfo 你说对了,未来确实还有更多打算。鉴于现在我在外旅行,没有趁手的电脑,这个计划还是打算在之后再说。推送平台的叫发法确实容易引起误会,已经不止有一个人理解错误了。我得想个更好的描述方法。

关于乱码问题,我想可能是我的ThunderBird设置问题。现在换到网页gmail应该好了。不过gmail改版之后我瞬间变邮件白痴了……

没想到大家反响这么多,看来我得继续拿出点新东西不要让大家失去热情了

Regards,
-Monnand

2011/12/26 wonderfo <wond...@yeah.net>

Ricky J. Wu

unread,
Dec 26, 2011, 11:28:48 PM12/26/11
to golang...@googlegroups.com
我理解的是叫做统一推送平台接口什么的更容易懂
 
http://blog.csdn.net/richardsa
________________________
Ricky J. Wu

Monnand

unread,
Dec 28, 2011, 11:15:43 PM12/28/11
to golang...@googlegroups.com


2011/12/26 Ricky J. Wu <rich...@live.com>
我理解的是叫做统一推送平台接口什么的更容易懂
 

大约如此吧。我也找不出个简单明了的方法解释它的功能。但是理解之后就方便了。

另外,不知道现在大家编译运行过程中是否有什么bug。如果有的话务必和我讲。多谢了!

-Monnand
 

mon...@gmail.com

unread,
Jan 16, 2012, 1:14:15 AM1/16/12
to golang...@googlegroups.com
经测试,uniqush 可以支持最新的weekly版本(2012-01-15)
Reply all
Reply to author
Forward
0 new messages