分集接收技术-webim技术收集笔记_dawn

一 : webim技术收集笔记_dawn

Jabber是著名的即时通讯服务服务器,它是1个自由开源软件,能让用户自己架即时通讯服务器,可以在Internet上应用,也可以在局域网中应用。
XMPP(可扩展消息处理现场协议)是基于可扩展标记语言(XML)的协议,它用于即时消息(IM)以及在线现场探测。它在促进服务器之间的准即时操作。这个协议可能最终允许因特网用户向因特网上的其他任何人发送即时消息,即使其操作系统和浏览器不同。XMPP的技术来自于Jabber,其实它是Jabber的核心协定,所以XMPP有时被误称为Jabber协议。Jabber是1个基于XMPP协议的IM应用,除Jabber之外,XMPP还支持很多应用。
Jabber服务软件有很多,具体可以参考jabber官方网站的列表:
Jabber官网地址:http://www.jabber.org/
常用Jabber服务器软件:其中最为方便安装搭建的无疑是Openfire(Wildfire),1款基于GPL协议开源软件,Openfire有linux、windows和MAC的不同版本,软件需要java环境支持,不过软件本身自带了环境包,你可以根据你的需要下载不同的版本。
下载地址:http://www.igniterealtime.org/downloads/index.jsp#openfire
更详细的安装配制可以参考网页:[url=http://blog.csdn.net/expendable/archive/2007/06/25/1666122.aspx]基于开源jabber(XMPP)架设内部即时通讯服务的解决方案[/url]

JWChat是1个功能强大,基于Web的Jabber™客户端。采用AJAX技术开发,这个客户端只用到了JavaScript与HTML。它具备基本的jabber即时消息功能,用户管理,基于MUC协议的群聊天功能。

近期学习总结:快速学习方法。
从开源代码那里了解到有4种代码可以参考:
1、jwchat
2、claros chat
3、yafamato
4、smark
其中jwchat单纯使用js,使用json来做AJAX实现。
smark是openfire的客户端,很多人都在使用它。
其中yafamato就是在他上面的WEB扩展,并且使用struts技术。
claros chat使用yui做为页面布局的扩展,主要使用js,另外使用servelt编程。呵呵
另外提供一套开源框架作为此类Web IM开发的参考:
Java2Script + Smack + Jabber (Gtalk)

示范例子(google talk是基于Jabber的XMPP协议的):
http://demo.java2script.org/gtalk/

其中Java2Script,提供用Java + Eclipse SWT的开发RIA的开发环境:
http://j2s.sourceforge.net/

Smack,提供基于Jabber XMPP协议的Java类库:
http://www.igniterealtime.org/projects/smack/index.jsp

Java2Script Gtalk,提供Java + SWT的桌面版gtalk客户端,可以编译为基于JavaScript + HTML+ CSS的Rich Internet Application:
http://demo.java2script.org/gtalk/

现在WebIM可谓非常流行,其中已实现WebIM的厂商包括大名鼎鼎的sohu,Tencent QQ,MicrosoftMSN,Google Gtalk,新浪,alibaba的淘宝旺旺,很多很多,基于WebIM的聊天引擎设计思路无非以下几种:

  1. Ajax无刷新交互,设计1种时间间隔定期获取数据(如先每5秒刷新一次,再‘按5,10,15,……刷新一次获取数据,目前利用这一思路实现聊天引擎的开源产品很多,大家可以自己到open-open网站查阅)
  2. 基于Pushlet技术的聊天引擎的实现
  3. 基于Comet技术的聊天引擎的实现
  4. 基于Jetty服务器的Comet技术的聊天引擎的实现
  5. 基于XMPP协议的聊天引擎的设计与实现(可以利用Flash或Ajax或Js与Jabber服务器交互)
目前利用的最多的是通过Flash的XmlSocket+JS与网页的聊天UI进行交互或直接利用Flash界面(可基于Flex的AIR或其他等),本文重点介绍第五种聊天引擎的设计与实现,这也是大名鼎鼎Google的Gtalk采用的协议,关于XMPP协议,大家可以查阅http://www.xmpp.org官方网站,先想听听大家的意见,大家一般实现WebIM是怎么来设计与实现的呢?也是用开源的产品么?

引用:http://www.javaeye.com/topic/244917

即时聊天,WebIM开发之通讯模式介绍




我打算写1个系列文章,介绍webim的方方面面,今天开始第一篇。

我之前发布了1个webim,那个im设计了前端UI、交互,后端程序和通讯只是随便写了一下。作为1个交互很多的web应用,良好的后端设计可以减少数据库访问、减轻服务器负载;良好的通讯模式更是可以较少服务器连接数、节省流量。这篇文章主要讲web即时通讯中常用的技术。

HTTP是无连接的,HTTP通讯过程基本就是:客户端发送请求给服务器,服务器接收请求给出响应信息,客户端接收响应信息显示在用户的显示器上,客户端断开连接。由此可知,要实现即时聊天中的”即时”,我们有2个办法:服务器抓住连接不断开和客户端不断的向服务器发起请求实现伪即时。当然用FlashXMLSocket可以实现真正的即时通讯,但这样已经不是使用HTTP协议了,HTTP天生的优势(无需另外开端口、自动穿越防火墙)也就无法体现。

1.短轮询(polling):核心思想是客户端定时去服务器取消息。为了实现即时效果,轮询的间隔必须设计得足够短,另外为了操作的流畅,需要使用Ajax来发送请求。本人的QGYWebIM就是采用的此方案。这种方案的优点是:后端程序编写比较容易,发送完响应信息马上断开连接,不会占用太多服务器资源。缺点是一般情况下,频繁的请求中有大半是无用,这些冗余请求无形中浪费了带宽和服务器资源。我们可以通过判断用户的活跃程度来决策请求服务器的间隔,我在51的1个帖子提到过这种方法,但是间隔一旦长了,消息的传送就有延时,违背了即时聊天的初衷了。

2.长轮询(long-polling):基本原理是客户端向服务器发送请求,服务器接到请求后hold住连接,直到有新消息才返回响应信息并关闭连接,连接被断开期间用户的新信息会被服务器缓存起来。客户端处理完响应信息后再向服务器发送新的请求。这种做法的优势是如果用户一直没新消息,客户端不会频繁的轮询去服务器取消息,节省了流量,但是服务器维持长连接是很消耗资源的。具体实现起来,前端这边基本不需要什么改动,依然是用Ajax轮询取信息,后端需要在没有新消息时处理一下。

3.长连接(streaming):其实很早以前就有人使用这种技术来实现聊天室的通讯。以前在页面中嵌入1个iframe,iframe里放1个使用长连接页面,服务器有新消息就会及时的在iframe里反映出来,再依靠客户端的脚本解析出来就OK了。这样做1个比较严重的问题是:使用iframe请求长连接时,无论是IE还是firefox都会认为页面没有加载完而显示进度条,很难看。不过这个问题是可以解决的。firefox支持了StreamingAjax,在readyState为3之际就能接受数据,所以问题不大;IE则只能在readyState为4,即连接断开时才能得到返回值。但是伟大的Google工程师使用了1个hack成功的解决了这个问题:使用1个被称为“htmlfile”的ActiveX,把iframe放在这个ActiveX里就OK了。

// we were served from child.example.com but
// have already set document.domain to example.com
var currentDomain = "http://exmaple.com/";
var dataStreamUrl = currentDomain+"path/to/server.cgi";
var transferDoc = new ActiveXObject("htmlfile"); // !?!
// make sure it's really scriptable
transferDoc.open();
transferDoc.write("");
transferDoc.write("<scripttype="text/javascript"><!--
document.domain='"+currentDomain+"';
//--></script>");
transferDoc.write("");
transferDoc.close();
// set the iframe up to call the server for data
var ifrDiv = transferDoc.createElement_x_x("div");
transferDoc.appendChild(ifrDiv);
// start communicating
ifrDiv.innerHTML = "";
无疑,使用长连接对于用户来说是最好的方案,用户体验最好(消息能及时的到达)、占用用户带宽最少(不会发送无用的请求),但是会增加服务器的开销;长轮询是折中方案,FacebookIM就是采用这种方案,不过做了一点改动:客户端发起的每个连接服务器都hold10S,这10S中新消息会源源不断的返回给客户端,10s后连接关闭,客户端发起下1个连接。这样做是因为Facebook的用户会不断的打开、关闭新页面,如果每个页面都建立1个永久的长连接,会阻塞浏览器其他请求,服务器也会吃不消的;短轮询因为实现起来简单,适用于小型应用。

http://www.qgy18.com/2008/08/webim-design-transport/


常规来说,有以下方法:

1。使用JavaApplet作为中介和服务器交互。不过用户必须为这交互过程编写Java代码(www.loach.net.cn]。
2。使用ActiveX控件做中介。但是ActiveX的权限太大,未一定能得到客户信任。
3。使用IFrame把某个窗体隐藏,然后用传统的方法进行GET和POST。不过请求数据的发送和状态都非常难控制
4。使用MSXML的XMLHTTP来进行数据的传输。这个只适应于Win98或安装了MSXML(IE6自带的Windows系统)
5。使用dotnet的Assembly来写客户端程序。不过这需要客户端安装dotnet组件。

Lostinet.Janc(以下称为Janc)是1个实现和服务器交互的组件。
实际上,它没有提供新的方法来进行和服务器的交互。
它的编写目的就只有1个:为了方便:
要方便代码的编写,要方便程序的发布。。

Lostinet.Janc采用第四种方法(使用Microsoft.XMLHTTP)和服务器交互。

从作者采用这个组件做成的聊天室 http://www.lostinet.com/jancchat/guest/ 和论坛http://forum.lostinet.com/Forum.Aspx 可以看到速度实在快的厉害

二 : 分集接收技术

分集接收技术

分集接收技术 分集接收技术

1 分集技术的分类

1.1 分集接收作用

分集接收技术是一项主要的抗衰落技术,它可以大大提高多径衰落信道下的传输可靠性,其本质就是采用两种或两种以上的不同方法接收同一信号以克服衰落,其作用是在不增加发射机功率或信道带宽的情况下充分利用传输中的多径信号能量,以提高系统的接收性能。[www.loach.net.cn]

1.2 基本思路

将接收到的多径信号分离成不相关的(独立的)多路信号,即选取了一个信号的两个或多个独立的采样,这些样本的衰落是互不相关的,这意味着所有样本同时低于一个给定电平的概率比任何一个样本低于该值的概率要小得多; 然后将这些信号的能量按一定规则合并起来,使接收的有用信号能量最大。对数字系统而言,使接收端的误码率最小,对模拟系统而言,提高接收端的信噪比。

1.3 分集技术的分类

分类图如图1所示:

图1 分集技术分类

分集接收技术 分集接收技术

从信号传输的方式来看,分集技术分为显分集和隐分集两大类。(www.loach.net.cn)

其中显分集指利用多副天线接收信号的分集,构成明显的分集信号的传输方式 ;

隐分集只需一副天线来接收信号的分集,分集隐含在传输信号之中,在接收端利用信号处理技术来实现分集接收 。

在显分集技术中又分为宏分集与微分集两种形式。宏分集(也称为“多基站”分集)以减少由于阴影效应而引起的大范围慢衰落为目的,它的作法是把多个基站设置在不同的地理位置和不同方向上,同时和小区内的一个移动台进行通信(可以选用其中信号最好的一个基站进行通信)

微分集是以抗快衰落为目的,同一天线场地使用两个或多个天线的分集方式。理论和实践都表明,在空间、频率、极化、场分量、角度及时间等方面分离的无线信号,都呈现互相独立的衰落特性,因此可采用空间分集、时间分集、频率分集、极化分集、角度分集和多径分集等多种分集技术。

1.4 几种常见的隐分集技术

1.交织编码技术

交织编码技术举例如下:

假设原始为11101101100101010110D101011,共计28位,按4╳7矩阵排列,依次按行写入发送矩阵。

如图2(a)所示。

图2 交织原理示意图

假设由于某种干扰出现突发错误,即使7个码元中连续错两个或两个以上时,接收端如果不采用交织编码技术就不能正确恢复,出现码字错误。为了提高纠错能力,在发端改变一下传输顺序,即将图2(a)中的数据用“横写竖读”法写入块交织器,这时交织器的输出就是按图2(b)中的左面第一列1010,然后第二列1101?。这样,当所传输的码序列连续错4

个码元时,对应的每个码字只

分集接收技术 分集接收技术

错一个,已将连续错码分散开来,通过分组码纠错技术、可以纠正少量的差错,从而纠正了突发性的连续差错。(www.loach.net.cn)

交织阵列的行、列数越多,抗干扰能力越强。但是,只有在接收端收到最后一个数据,才能进行纠检错处理,从而造成数据传输时延增大。所以在设计交织编码阵列时,应该统筹考虑。上面只是作了原理性说明,但有了这样的概念或基础,就可理解GSM和CDMA等系统中的各种交织编码技术。

2.跳频技术

跳频的实现方式有两种,一是基带跳频,它将话音信号随着时间的变换使用不同频率的发射机发射,基带跳频适合于发射机数量较多的高话务量小区。二是射频跳频,又称合成器跳频,它是话音信号使用固定的发射机,在一定跳频序列的控制下,频率合成器合成不同的频率来进行发射。

2 RAKE接收机

2.1 RAKE接收机的工作原理

图3 RAKE接收机原理

基本原理如下:

移动台RAKE接收部分主要由相关器1~ 3、搜寻相关器和合并器等组成。伪随机码调制过的信号由发端发射,经多条不同的路径延时和损耗后与噪声一起进入接收机,经过变频、中频放大和A/D变换后,进入RAKE接收部分。该部分的搜寻相关器从到达的各路信号中找出三路最强的信号,并给出这三路信号中伪随机码的参考相位,

使本地码的三个发生器的输出码相位分别与这三路信号中的

分集接收技术 分集接收技术

伪随机码同步,经过各自解扩,相关解调输出同一信息的数据,经相应的合并后进行译码。[www.loach.net.cn)

由于每一个相关器都等效一个接收机,三个相关器等效三个接收机,其输出经合并后的信号的信噪比得到了很大的改善(一般平均有3dB的增益)。另外,搜寻相关器总是搜索和估计各路中最强的三个信号供其他三个相关器进行相关解调,从而系统可以处于最佳的接收状态。

3 分集合并技术

在分集接收中,在接收端从不同的N个独立信号支路所获得的信号,可以通过不同形式的合并技术来获得分集增益。如果从合并所处的位置来看:合并可以在检测器以前,即中频和射频上进行合并,且多半是在中频上合并;也可以在检测器以后,即在基带上进行合并。合并时采用的准则与方式主要可以分为三种:最大比值合并、等增益合并和选择式合并。

假设M个输入信号电压为r1(t),r2(t),?,rM(t),则合并器输出电压r(t)为: (式1) r(t)?a1r1(t)?a2r2(t)?aMrM(t)??akrk(t)

k?1M

式中,ak为第k个信号的加权系数。

3.1 最大比值合并

最大比合并是在接收端有N个分集支路,经过相位调整后,按适当的增益系统,同相相加,再送入检测器进行检测。利用切比雪夫不等式,设N为每支路噪声功率,可以证明当可变加权系数为 a i ? i时,分集合并后的信噪比达到最大值 。

最大比合并的平均输出信噪比、最大比合并增益分别如(式2)、(式3)所示。

SNR R ? M ? SNR (式2)

SNRRK? R ? M (式3) SNR

可见信噪比越大,最大比合并对合并后的信号贡献越大;另外平均输出信噪比随M(分集支路数目)的增加而增加。 r(t)N

分集接收技术 分集接收技术

3.2 等增益合并

等增益合并是各支路的信号等增益相加,即式(1)中加权系数ak=1,k=1,2,??,M。(www.loach.net.cn]等增益合并后平均输出信噪比、等增益合并增益分别如(式4)、(式5)所示。

???

SNR E ? SNR ?1 ? ( M ? 1) ? (式4) 4?? SNRE?K??1?(M?1) E SNR 4 (式5)

3.3 选择式合并

选择式合并是检测所有分集支路的信号,以选择其中信噪比最高的那一个支路作为合并器的输出。由式(1)可见,在选择式合并器中,加权系数只有一项为l,其余均为0。选择式合并又称为开关式相加。这种方式方法简单,实现容易。选择式合并的平均输出信噪比、选择式合并增益分别如(式6)、(式7)所示。

M1 SNRS? SNRm (式6) ?ii?1 MSNRS1k?? s ? (式7) SNRmi?1i

可见,每增加一条分集支路,对选择式分集输出信噪比的贡献仅为总分集支路数的倒数倍。

图4给出三种合并方式平均信噪比的改善程度。

图4 三种分级合并性能比较

分集接收技术 分集接收技术

可以看出,在这三种合并方式中,最大比值合并的性能最好,选择式合并的性能最差。[www.loach.net.cn)当N较大时,等增益合并的合并增益接近于最大比值合并的合并增益。

三 : 分集接收技术的分集技术

分集接收技术 -分集技术 接收合并技术

分集技术是研究如何充分利用传输中的多径信号能量,以改善传输的可靠性,它也是一项研究利用信号的基本参量在时域、频域与空域中,如何分散开又如何收集起来的技术。“分”与“集”是一对矛盾,在接收端取得若干条相互独立的支路信号以后,可以通过合并技术来得到分集增益。从合并所处的位置来看,合并可以在检测器以前,即在中频和射频上进行合并,且多半是在中频上合并;合并也可以在检测器以后,即在基带上进行合并。合并时采用的准则与方式主要分为四种:最大比值合并(MRC:Maximal Ratio Combining)、等增益合并(EGC:Equal Gain Combining)、选择式合并(SC:Selection Combining)和切换合并(Switching Combining)。

。www.loach.net.cn”

最大比合并

在接收端由多个分集支路,经过相位调整后,按照适当的增益系数,同相相加,再送入检测器进行检测。在接受端各个不相关的分集支路经过相位校正,并按适当的可变增益加权再相加后送入检测器进行相干检测。在做的时候可以设定第i个支路的可变增益加权系数为该分集之路的信号幅度与噪声功率之比。

最大比合并方案在收端只需对接收信号做线性处理,然后利用最大似然检测即可还原出发端的原始信息。其译码过程简单、易实现。合并增益与分集支路数N 成正比。

等增益合并原理

等增益合并也称为相位均衡,仅仅对信道的相位偏移进行校正而幅度不做校正。等增益合并不是任何意义上的最佳合并方式,只有假设每一路信号的信噪比相同的情况下,在信噪比最大化的意义上,它才是最佳的。它输出的结果是各路信号幅值的叠加。对CDMA系统,它维持了接收信号中各用户信号间的正交性状态,即认可衰落在各个通道间造成的差异,也不影响系统的信噪比。当在某些系统中对接收信号的幅度测量不便时选用EGC。

当N (分集重数)较大时,等增益合并与最大比值合并后相差不多,约仅差1dB 左右。等增益合并实现比较简单,其设备也简单。

选择式合并系统

采用选择式合并技术时, N 个接收机的输出信号先送入选择逻辑,选择逻辑再从N 个接收信号中选择具有最高基带信噪比的基带信号作为输出。每增加一条分集支路,对选择式分集输出信噪比的贡献仅为总分集支路数的倒数倍。

切换合并原理图

接收机扫描所有的分集支路,并选择SNR在特定的预设门限之上的特定分支。在该信号的SNR 降低到所设的门限值之下之前,选择该信号作为输出信号。当SNR 低于设定的门限时,接收机开始重新扫描并切换到另一个分支,该方案也称为扫描合并。由于切换合并并非连续选择最好的瞬间信号,因此他比选择合并可能要差一些。但是,由于切换合并并不需要同时连续不停的监视所有的分集支路,因此这种方法要简单得多。

对选择合并和切换合并而言,两者的输出信号都是只等于所有分集支路中的一个信号。另外,它们也不需要知道信道状态信息。因此,这两种方案既可用于相干调制也可用于非相干调制。

合并方式比较

这里比较的主要是最大比合并,等增益合并选择式合并三种方式。

三种合并方式性能比较

可以看出,在这三种合并方式中,最大比值合并的性能最好,选择式合并的性能最差。当N较大时,等增益合并的合并增益接近于最大比值合并的合并增益。

分集接收技术 分集改善效果

分集改善效果指采用分集技术与不采用分集技术两者相比,对减轻深衰落影响所得到的效果(好处)。为了定量的衡量分集的改善程度,常用标称改善效果,即用分集增益和分集改善度这两个指标来描述。

现用下面的分集效果改善图加以说明。图中的纵坐标及横坐标的意义已经标出。曲线A表示在深衰落情况下无分集时的相对电平累积分布曲线;曲线B表示采用分集接收的相对电平累积分布曲线。

分集改善效果

分集增益是指在某一累积时间百分比内,分集接收与单一接收时的收信电平差。这一电平差越大,分集增益越高,说明分集改善效果越好。例如下图中,对应50%、5%、0.1%的累积时间百分比时,这一电平差分别为3dB、5.5dB、14dB。积累时间百分比越小,分集增益越高。0.1%时间百分比的分集增益为14dB意味着:无分集时由曲线A查出此时的衰深深度比自由空间收信电平低30dB;采用分集技术后,由曲线B查出此时的衰落深度仅比自由空间收信电平低16dB。可见分集接收使衰落深度减轻了14dB。

分集改善度是指在某一相对的收信电平时,单一接收与分集接收的衰落累积时间百分比之比。其比值越大,说明分集改善效果越好。在上图中,当收信电平低于自由空间收信电平20dB时,单一接收与分集接收对于同一收信电平,其衰落的累积时间百分比分别为1%和0.01%,两者的比值为100,亦即分集改善为100。在数字微波系统中,不管采用哪一种分集接收方式,都会使系统的有效衰落储备增加,即抗频率选择性衰落的能力增强。还能不同程度地改善带内失真,改善交叉极化鉴别度。

下页更精彩: 1 2 3
上一篇: 淘宝店标的尺寸是多少-木栈板标准尺寸是多少? 下一篇: 本命年需要注意什么-2015年大学新生报到需要注意什么

优秀文章