现在我们在网上都有很多身份,例如我自己,就有三/四个MSN帐号,还有QQ,GTalk,而web方式的,还有几个Blog,几个vblog,总之很多。而尺寸小的手机、MID这类手持设备,我们不可以好像desktop那样,开着N个client,打开N个网页,其实我们不在乎我们在使用那个软件,我们只希望找到找到联系人。D-Bus提供了IPC通信基础,有很多机制都建立在D-Bus上面,D-Bus给出基础的通道,而在这个通道上有还有很多高层的封装,针对某些特定的应用。telepathy是其中之一,针对char,voip类应用。很满足我们的需求,因此有必要研究一下。
wiki的telepathy给出下面这个图:
Telepathy是灵活的,模块化的,支持pluggable实时的通信协议的通信框架。使用D-Bus作为分属不同进程组件的IPC。telepathy客户端使用D-Bus API(telepathy-glib)共享多个客户端(例如IM,Email应用的呈现等等)之间的连接。有下面的特点:
-
实时性
:
Telepathy支持IM(支持点对点和群组) ,语音呼叫和视频呼叫,和D-Bus一样,他不适合存储转发的应用,例如email的收发)
-
整合性
: 不同的开发者都可以从这些通信中获益,Telepathy可将开发者将各自的程序整合在一起。
-
模块化
: Telepathy组件是模块化的,开发者可以集中精力开发各自的组件。
从网上的资料看telepathy是NOKIA发展起来的。在NOKIA的maemo中包含。在Moblin/MeeGO中也含有这部分。XMPP支持大部分我们常见的IM协议,例如Gtalk SIP,MSN,ICQ,OO,Facebook char,AIM,QQ,IRC。对于我们,最商用的就是MSN和QQ。而Nokia还将其扩展到电话通信,例如Voip的Skype,2G/3G移动通信Phone/SMS。看起来非常之吸引,所以值得认真学习一看,看看是否带来惊喜。在http://telepathy.freedesktop.org/wiki/Protocols%20Support
给出一个表,给出这些IM在语音聊天、视频聊天、文件传输、Invisible mode下目前telepathy是否支持。invisible mode不是很理解,可能是“潜水”。对于支持上网的handset设备,这些特点我觉得还不算很需求,但是一个重要的,提高价值的,锦上添花的,证明有档次的应用(^_^)。
下面是一些重要的资料,也是下一阶段要学习的。
http://telepathy.freedesktop.org/wiki/Setup
:关于安装不过moblin,阿土(ubuntu)和fadora都支持,到是缺那个包就用那个。
http://telepathy.freedesktop.org/spec/
:描述D-Bus接口定义
http://telepathy.freedesktop.org/wiki/System%20Overview
:框架结构介绍
http://people.collabora.co.uk/~danni/telepathy-book/
:开发人员手册
http://telepathy.freedesktop.org/doc/telepathy-glib/
:telepathy-glib手册
http://telepathy.freedesktop.org/doc/telepathy-qt4/
:telepathy-qt4手册
很多资料都可以从wiki入口中寻找。
Telepaphy是一个规范(spec),定义一套D-Bus的接口,以及一堆应用(是接口规范,但是是否包含应用就不是很明确,看怎么理解吧)。针对处理我们常见的IM类应用,除了常见的文字聊天,包括聊天室,还可以涉及音通话,视频通话,以及文件传输,它定义了一套IPC的通信机制,对这些IM应用进行操作,获取联系人的状态,信息,以及触发某个处理。
通过读取.manager文件,需要建立一个proxy对象。在.manager文件中描述了连接管理支持的协议以及所需的参数。给这个链接管理器一个unique名字,则建立一个D-Bus Proxy。
这里我们用D-Bus的标准语言描述一下,在Telepathy中,server是IM这些应用,我们的开发程序是client。为连接管理器为应用建立了一条与DBus的连接,给出远端接口的路径,建立了一个proxy,通过对Proxy的操作,实际操作远端接口的方法。这一步骤有些类似之前在D-Bus中学习中client建立与远端某个接口的连接。
proxy = dbus_g_proxy_new_for_name(conn/*连接管理器*/,"com.wei.test"/*remote的bus name*/, "/com/wei/MyObject"/*remote的对象名*/,"com.wei.MyObject.MyInterface"/*remote的接口名*/);
在标准的D-Bus中,没有.manager,这是telepathy定义的,如果我们需要使用gabble,使用gabble.manager文件。我们与远端对象名'org.freedesktop.Telepathy.ConnectionMananger.gabble',接口路径为'/org/freedesktop/Telepathy/ConnectionManager/gabble',建立连接(其中远端应用的Bus name的well known名字是org.freedesktop.Telepathy.ConnectionManager.gabble)
。如果连接失败,则D-Bus daemon会使用gabble.service文件启动Gabble服务。如果连接上,可以使用RequestMethod来调用method。
在telepathy还有一些新的概念。以IM例子,在接口上,我们使用RequestHandles (1/*1是handle的类型,1==contact*/, ['your@jid.org ']*/
),将返回一个[2],例如是numbers的list,我们与其中一个number进行通信。
在这个例子中1表示的类型,就
是D-Bus中的参数类型,例如u == uint32, au == array of uint32, a(uu) == array of
(struct of uint32, uint32), s == string, a{su} == dictionary of (string
to uint), aau == array of (array of uint32)。接着
我们将请求一个channel,RequestChannel ('org.freedesktop.Telepathy.Channel.Type.Text', 1, 2, True
),第一个参数是interface的名字,1是handle的类型,2是handle。“true”表示telepathy client说明要试图获取此channel的handle。如果连接管理器同意你的请求,他将返回string,说明D-Bus object的路径,这样我们通过connection的bus名字和获取的路径名,为那个channel对象建立proxy,并利用proxy调用那个channel的call method。
telepathy和普通的D-Bus向比较,它定义了一套学习机制,使得client能够学习server的D-BUS接口,而无需一开始就明确D-Bus的xml表述。如果server升级后出现接口变化,client能够自动适配这种变化。进程之间的通信不会因为某个一个进程升级,接口修改,而导致所有进程修订。换句话,它是智能的。
相关链接: 我
的Linux相关文章
分享到:
相关推荐
- **--enable-macosx-defaults**:在Mac OS X上构建默认配置(默认启用)。 - **--with-macosx-sdk=DIR**:使用指定目录下的SDK进行编译。 - **--with-macosx-version-min=VERSION**:编译用于指定版本及更高版本的...
### Telepathy-Maemo Summit 2009:一种模块化的实时通信框架 #### 一、概述 Telepathy 是一个为桌面 Linux 和移动 Linux 平台(如 Maemo 和 MeeGo)设计的实时通信框架。它通过将复杂的通信功能分解成独立的组件...
在技术实现上,这个扩展插件主要基于QML(Qt Quick Markup Language),QML是Qt框架下的一种声明式语言,用于构建用户界面。通过QML,开发者能够用简洁的代码定义UI元素和逻辑,使得程序的界面设计变得直观且高效。...
在工作原理上,"telepathy-mission-control-4.60"基于组件化的设计思想,由多个模块组成,每个模块负责特定的通信任务。例如,连接管理器负责建立和维护网络连接,而通道提供者则处理具体的通话通道。这样的设计使得...
Telepathy Haze 是一个通信框架,用于在 SailfishOS 操作系统上实现即时通讯功能。"Haze"可能指的是它在复杂或模糊的通信场景下提供清晰、简单的接口。"accounts-extensions"部分则意味着这个项目专注于扩展账户管理...
**正文** `telepathy-tank` 是一个基于 Telepathy 框架的矩阵连接运算符,主要用于在 Qt 应用程序中...对于那些希望在自己的 Qt 应用中添加类似功能的开发者来说,`telepathy-tank` 是一个宝贵的学习资源和参考实现。
telepathy-morse:Telepathy框架的电报连接管理器
离线安装包,亲测可用
离线安装包,亲测可用
不知道如何在 Pidgin 中设置看不见的状态即使通知设置允许,锁定屏幕上也没有通知。 因为 Gnome Shell 在屏幕锁定时禁用了所有扩展支持的 Gnome Shell 版本v31:3.10 - 3.30 v32:3.32 v36:3.36安装要求由于此扩展...
总结,`telepathy-qt`是Qt平台上实现即时通讯功能的重要工具,它通过提供简洁的API,使得开发者能够在Qt环境中轻松集成聊天、音视频通话等功能。结合Qt Creator和QtC++模板,开发者可以快速搭建并调试基于`telepathy...
Telepathy-SofiaSIP 是一款开源项目,它作为 Telepathy 框架的一个重要组成部分,专门负责处理 SIP(Session Initiation Protocol)通信。Telepathy 是一个设计用于即时通讯(IM)和多媒体通信的接口库,它提供了一...
Telepathy最初在UDP地狱中使用了3年后才为设计。 我们需要一个库: 稳定且无错误: Telepathy仅使用700行代码。 没有魔术。 高性能:心灵感应可以处理数千个连接和数据包。 并发: Telepathy每个连接使用两个...
官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装
官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装
官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装
官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装