为什么 Gtalk 不支持视频聊天?

这是一个网友问我的问题,当时我的回答是:大概 Jabber 协议不支持吧,这个问题你应该去问 Google。但是当我搜索了一下 Gtalk 的帮助和网络上的内容后,居然没有发现这个问题的解答(可能是我搜索技术不到家),这就变成了一个有趣的问题。

为什么 Gtalk 不支持视频聊天?在咨询了 Wikipedia 之后,我发现我的回答基本是对的,因为 Gtalk 使用的聊天协议不支持。

Gtalk 使用的通信协议叫做 Jabber,因特网工程工作小组(IETF)已经将 Jabber 的核心 XML 串流协定以 XMPP(Extensible Messaging and Presence Protocol) 之名,正式列为认可的即时通讯及 Presence 技术。而 XMPP 的技术规格已被出版为 RFC 3920RFC 3921。所以在一般的讨论中,我们不区分 Jabber 和 XMPP。

从上面的介绍中我们也可以看出,XMPP 的技术是基于可扩展标记语言(XML)的,所以呢它有它的很多优点,比如:分布式(想像一下用电子邮件聊天),可扩展(XML命名空间的特性),弹性佳(可用在不同领域,比如网络监控,游戏),多样性(Jabber协议的公开性使你不必被一款聊天软件绑架),安全(利用已有的SASL及TLS技术)。

但是也正因为 XML,XMPP 协议有一些缺点,正是这些缺点给 Gtalk 带来了限制。

缺点一:Scalability(规模可伸缩度?)--> Gtalk 不支持群组聊天(Group Chat)。

XMPP 的可伸缩度不好,当进行多用户聊天或者提供发布/订阅服务时,XMPP 会带来很多 overhead(网络开销),这样会大大降低整个系统的通信效率。一些组织正在通过添加协议扩展来解决这个问题,就比如 2007 年 6 月 Google 在 Gtalk Gadget(像我们通常在Gmail窗口中看到那个)中加入了 Group Chat 功能,但是直到现在桌面版 Gtalk 仍然不支持 Group Chat。

缺点二:No binary data(无法传输二进制数据)--> Gtalk 不支持视频聊天。

XMPP 协议的数据包通常是被编码成一个长 XML 文档,限制了它直接传输原始二进制数据流的能力,所以使用 XMMP 协议的聊天工具的文件传输一般使用其它协议,比如 HTTP 来实现,如果实在无法避免用 XMMP 协议传输文件等,它一般使用 Email 中常用的 base64编码。

但既然这样,为什么 Gtalk 支持语音聊天呢?这就要说到另一个协议,XMMP 的扩展协议 Jingle,这是一个还没有被 XMPP标准正式采纳的扩展,而 Gtalk 采用的 Jingle 协议和已提交的草案也有所不同。Jingle 协议使得 Gtalk 支持 p2p 的多媒体互动,比如语音聊天功能。

那既然有多媒体功能扩展,为什么 Gtalk 现在不支持视频聊天呢?我不相信 Google 的工程师没有尝试添加视频聊天功能,可能的原因我猜想是视频聊天的性能达不到。猜想的依据是什么呢?Gtalk API 文档,Google 说:In the future, we plan to support SIP signaling as well. 如果 Jingle 能完美支持视频聊天,大概没有需要去支持另外一个类似的多媒体协议吧。

所以呢,我们可以看到虽然 Gtalk 的当前版本有内存泄露 BUG,而一年多来(2007年1月5日发布Gtalk 1.0.0.104) Google 仍然没有发布新版本,这说明 Gtalk 项目组的精力被其它更重要的东西占用了,这个东西会不会是对 Gtalk 视频和群组聊天的支持呢?我们拭目以待。

喜欢玩新软件的朋友可以尝试一下这个:Google Talk Labs Edition,里面有一些好玩的新功能!

重要评论:作者可能对xmpp还不是很了解,文章有很多的臆想,有些不太对。xmpp协议是个总称,它包括核心协议,扩展协议等(xep)等,事实上核心协议只规定了很小很基本的一些功能,大量的功能都是在xep中规定的。而xep在逐步完善中,其中的很多功能处于实验阶段,google可能是嫌麻烦,每一次协议更新都要修改软件,索性等协议功能稳定了再去实现。xmpp协议里面是有群组聊天的,叫muc,但google只实现了它的一个子集,叫 groupchat,而没有完整实现muc。视频聊天和音频聊天本质上是一样的。google可能就是再等xep中关于jingle部分协议的稳定以后再实现。而你看到的这句话:“In the future, we plan to support SIP signaling as well.”在google talk刚推出的时候就已有了。而且那个时候它还说会推出各个操作系统平台的版本。而如今呢?所以事情的发展是会变化的。还有google那时候说要支持 sip,并不是xmpp功能有什么问题,而是想使im用户能够统一起来,互联互通。因为sip和xmpp都是被ietf接受的标准协议。

收到 Google Adsense PIN Letter

今天总算收到了 Google Adsense 寄给我的 PIN 信封,距离它公元 2008 年 3 月 24 日给我的电子邮件通知正好两周。现在貌似 Google 改政策了,以前都是 Adsense 帐户赚到 $50 以上才会寄 PIN 的,现在仅仅 $10 以上就邮寄 PIN 了。我的 Google Adsense 帐户开了两个月零七天,才赚了 $14.09,唉,真慢啊,什么时候才能到 $100 呢?

Google Talk 小徽章

无意间发现 Google 推出了一个新功能,Google Talk 小徽章,把一个 iframe 放到网站上,这样网站的访客就能直接通过点击这个小徽章里的链接匿名和发布者聊天,不需要 Google 帐户。

测试了一把,发现当状态标识为 "busy" 的时候,通过小徽章无法聊天;当状态标识为 "available" 时匿名访客才可以点击它来进行聊天。由于是匿名,聊天时发布者方显示的对方名字是 "Guest"。

想看看效果?看我的个人主页,或者博客右侧 widgets。

Google Reader 的一点问题

Google Reader 是我非常喜欢的在线博客订阅器,自从发现这个服务之后我就结束了尝试 N 个离线博客订阅软件的历史。用 Google Reader 看别人的博客好像看邮件一样,而且可以抓取一些国内无法访问的国外博客系统的 feed,很方便。

自从使用以来它就一直很稳定,不过这两天我发现 GR 貌似出现了一些小问题:一个是抓取我的博客 feed 有错,订阅的 http://feeds.feedburner.com/solrex 的条目中忽然多出了十条和我同一服务器的某个博客条目,而 feedburner 的原始连接中并没有这十条内容;二是抓取 feed 的时候没有通知订阅用户数,所以我的 feedburner 和 feedsky 显示的订阅用户一下子少了一大半,本来就只有一百多人订阅,现在显示的订阅数就更可怜了。

本来我以为这可能是个别问题,可是著名博客和菜头也在文章中说某些用户的订阅在 GR 中显示为乱码。这就叫人奇怪了,为什么 GR 在这几天发生那么多问题?难道是 GR 在测试新功能?

虽然 GR 这两天出了那么多问题,我仍然要推荐它,下面简单介绍一下我觉得比较好的特色:

1. 共享阅读。一种方法是把共享阅读块放在自己的主页上(看我的博客右侧栏),另一种是在 GR 的阅读视图里与 Google 好友共享阅读条目,还有一种方法就是把条目直接 email 给别人。

2. 快捷键操作。GR 有很多键盘快捷键,比如:j 阅读下一条,k 阅读上一条,n 移到下一条,p 移到上一条,o 打开列表项,这样操作起来非常方便。

3. 使用安全连接(https)的 GR,避免连接被重置。在中国国内某些网络条件下,明文传输的网页是会被过滤的,如果订阅的博客文章中有敏感词条,路由器就会重置网络连接,比如经常看到的浏览器提示“与服务器的连接被重置”就是由于这个原因。使用安全连接的 GR https://www.google.com/reader/view/ 能避免此类状况的发生。(此方法同样适用于 Gmail 的连接不稳定现象)

4. feed 阅读趋势。GR 可以统计你的阅读情况,并提供一些阅读趋势排行榜,以供你了解自己的阅读习惯。

Tor - Anonymity on Line

其实以前就见过 Baosheng 在博客里推荐 Tor 这个工具,据说可以访问 Wikipedia,只是当时潜意识里觉得太麻烦,就懒得搞。昨天晚上 Baosheng bg,请 ufx222, xum84, daoming, proline 我们一起吃饭,又提到了这个洋葱路由,今天就尝试了一下,果然好用。

简单来说,Tor 的功能就是,采用不同的“洋葱路由器(onion router 意思和代理服务器差不多)”来重定向网络请求,并且随时间更换路由,这样别人就无法监视你的网络访问情况,主要目的是为了保护隐私。而由此带来的副产品就是,onion routers 遍布全世界各地,所以就可以使用这个工具通过 onion routers 访问被“墙”封掉的站点(比如现在的 blogspot.com )。更多介绍请登录 Tor 官方网站 [href: http://tor.eff.org/ ] 。

从我的使用来看,刚开始使用访问网站速度可能慢点儿,用了一段时间之后速度就快很多了,大概是 Tor 自动在寻找洋葱路由服务器。而且最牛的是,我们公司的 DNS 坏了一小段时间,其间什么网站都没办法访问,而通过 Tor 居然访问正常,大概是 Tor 记录的是 IP 而不是 domain 吧。有意思的是访问 google.com 往往被重定向到某个欧洲的 Google 服务器,比如: google.de, google.es 之类的。

在 Linux 下 Tor 的配置很简单(我估计在 Windows 下会更简单,官方网站上有各种系统安装介绍):

首先,安装 Tor 软件,在 Ubuntu 下面就是:
sudo apt-get install tor
使用默认配置即可,即在 9050 端口打开一个 SOCKS 服务器。Tor 程序会以后台方式一直运行在系统里。

其次,为 Firefox 下载 torbutton 插件[href: https://addons.mozilla.org/en-US/firefox/addon/2275 ],安装。安装完成后,到"Tools->Add-ons->Extensions->Torbutton Preferences",在 "Proxy Settings" 中选择 "Use custom proxy settings",然后将前四个都留空,最后 "SOCKS Host:" 中填: localhost, Port: 9050,这样配置就完成了。

可以留意 Firefox 状态栏的最右端(窗口右下角),这时候会出来一个 "Tor Disabled",用鼠标点击该区域,就可以在 "Tor Disabled/Tor Enabled" 状态切换。这样在访问某些敏感站点时候就可以 Enable 它,在不需要时 Disable 它。也可以在 Torbutton Preferences中把这个文字格式的提醒改成一个洋葱头的图标提醒。

其实我想,不安装插件,只在网络设置中使用 SOCKS 代理也可以实现这种功能,如果这样的话,这里插件的作用只是启用和不启用代理的区别。那么,如果在校园网内,这个插件能否起到在 Firefox 的代理和插件这两个代理之间切换的目的呢?如果可以的话,就算不使用或者不能使用 Tor,这个插件也可以用作切换校园网代理使用了,倒也蛮方便的(只是我不需要用到了,所以就留给别人验证吧 X-D)。

PS: Yo2.cn 服务质量在下降,从 2007年7月19日8:25 到 9:00 之间都无法连接上,wget 可以下载但无法显示速度,更无法登录,最后出来一个错误:504 Gateway Time-out。唉,国产的 BSP 千万别学国产的足球队啊!烦死了,回去睡觉。

日志 20070707

今天比较闷热,刚刚外面在下雨,貌似又停了。在床上躺了将近一天,晚上跑北航吃的晚饭,因为 Weekly Report 还没有发给 PM,所以只好到公司一趟。昨天在北航食堂办了张租借卡,50 块押金,每月 5 块租金,刷卡加收 15% 餐费,真黑。不过没办法,在外面的小馆子吃饭有诸多不便,而且少有实惠又合口味的饭馆,只能忍了。从去年开始体验到在外面吃饭的诸多不爽,我就再也没抱怨过学校食堂,还是食堂比较合适各种口味的人吃饭。当然,那些从小娇生惯养的除外。现在幻想,Google 中国有自己的食堂和名厨,那他的员工真是相当的滋润,不过饭菜能打包回家吃不?

说到北航,就提一下最近挺有印象的两个特点。一,食堂的饭卡管理人员都是“一指禅”。而且还是相当慢的“一指禅”,那个打字的速度啊,输我的名字大概花费了二十秒,真不敢想象北航居然请这些人用电脑。如果说是照顾下岗职工或者是职工家属,你起码得找点能打字的吧,这样不是浪费同学的时间吗?二,搞笑的南门交通问题。北航的南门(锦秋国际对门)每天晚 7 点关门,非常不方便同学进出,但是它又有非常人性化的一面,南门的栏杆缝隙足够像我这样的体型进出。经常看见这种景象,保安关上门以后,看着一个个同学仍然义无反顾地朝关上的大门走去,然后非常精确地侧身从栏杆缝隙中穿过,简直可以算是北航一景了。我大概都穿越过二十次以上了,哪天一定要拍张照片发到相册中去。

昨天晚上和公司同事一起喝酒,一直到十一点多,回到住处已经是凌晨了,这也是导致今天没精神的重要原因。不过倒是听了不少有趣的谈话,硬件部的老板 Simon 说:“一个男人要想成熟应该学会四条:一,喝不加佐料的纯咖啡;二,喝啤酒,而且要是黑啤酒(guiness);三,吃苦瓜;四,品尝碧螺春。”然后他自己又加了一条:抽古巴雪茄,不过他说自己还没达到这一条。公司里还流传着一条 Slog: Be the best chip company in China. 据说是 Simon 酒后的豪言。还有一个 Berkeley EECS 的实习生 Kevin,今年大二,才 19 岁,不到美国允许喝酒的年龄,但是到中国就开怀畅饮啦!然后我问他在 UCB party 很多吧,有没有喝过酒?他说,我们 EECS 的学生课业很重的,party 很少的,他大学两年只参加过一次 party。他说 Berkeley 校区北部 party 比较少一些,南部比较多些。名校还是不一样,而且 EECS 读起来也应该不容易,啥会儿我能进这样的学校啊?

又回到北京了

好些天没有更新博客了(针对我的更新频率而言),原因很简单,有更重要的事情去做 :-)。

1 号到的北京,把寄放在同学那里的被子拖到租住的公寓,请邓飞、丽君吃了顿饭。2 号到公司报到,换了个办公桌,换了个电话。寄来的包裹和录取通知书同时到达,纳闷不已,为什么北京往南京挂号需要七天而南京挂号到北京只需要三天?害得我为了一张纸折腾(中科院的录取通知书着实简陋,信封是牛皮小信封,通知书就是一张请柬大小)。我原以为是通知书的那玩意儿是入学须知,但搞不明白的是,为什么入学须知要寄给我两次?

一毕业,这同学们好久不更新的博客都重新拾起来了,反而显得我有点儿懒。这下到公司工作,晚上的时间就多了些,可能又要恢复我正常的更新速度了。

这两天工作也没干什么事,FPGA 调试还不太熟练,模拟器又改了不少,而且更新中工作不太正常,所以就随便看看代码、看看邮件列表和一些 patch。GDB 的 mailing list 里这两天挺有意思的,有个人发了一个希望把 GDB 代码用 C++ 重写的邮件,然后一群大佬说这个问题别讨论了,各持己见讨论起来会没个头的。但是某个邮件里有巨牛的一句话:“The more C++ code I see, the more convinced I get that the language should die. ”让我叹服不已,哈哈。

重装了一个 Ubuntu,当然也装上了 beryl,比原来用着更方便了。Google desktop for linux 推出了,试用了一下,挺好的,特别喜欢它的两下 ctrl 就可以弹出搜索框,这样就免得我还得用鼠标把光标定位在 Google toolbar 里去。Google desktop 的 sidebar 没有在 Linux 版本上体现出来比较遗憾,那些小工具很有意思,但其实 Linux 本身就带有很多有一些的小玩意儿,喜欢玩的能把桌面配置得很 cool 或者 cute。为 Firefox 装了一个 IE7 的主题,看起来还是蛮好的,看来 Microsoft 的 UI 工程师也不是吃干饭的。但是 wine 现在还不支持 IE7,用 ies4linux 测试版装上之后,IE7 的 UI 效果一点儿也没有,真没劲。

毕业了,大家都在干不同的事,还有人(XHO)感叹没假期了,哈哈,准备成家立业的时候已经开始了,慢慢就该习惯了。

Google 街景

Google Maps 推出了 Street View,就是在查询地点的时候,可以查看一条街的照片,然后一路走下去。感觉真是太震撼了,这样可以足不出户就把某些地方旅游一遍。不过可惜的是,Google Maps 并不支持中国市场而 Google Ditu 并不提供本类服务。

唉,最近被毕业的事情弄的好烦,老是碰上些没谱的人,做事情出力不讨好。算了算了,不说了,都是同学。

Google Fans

以前我只承认自己是 “Google 的忠实用户“,不过现在我决定把自己上升为“温和的 Google Fans”。所以呢,博客主阵地也将转移到 Google: http://solrex.blogspot.com ,但 MSN SPACE 仍将保持同步更新。MSN 之所以没有失去我这个用户,应该感谢中国伟大的 GFW。比较易记的: http://blog.solrex.cn 会一直指向我主博客,谢谢。

唉,放弃原来的博客也是有点舍不得,在我的苦力经营下日点击量已经趋近 40,虽然大部分是 google 和 baidu 带来的,不过,这些数字又有什么用呢?后悔当时为博客选择域名不谨慎,其实,每个人都不应该把自己的幸福寄于他人,理智的人应该遵从 Adam Smith 的指导,在不伤害别人的前提下寻求自身利益的最大化。

本人下一个目标是努力争取在研究生阶段进入 Google 中国做实习生,我知道自己现在和 top coder 还相差很远,今后会努力提高在数学和算法领域的知识水平。我将不放过任何一个进入 Google 的机会,朋友们有任何和 Google 实习有关的消息都请 email 我一份,我会非常感谢。