- 浏览: 743455 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
u011487470:
感觉就是知识采集一样,博主能不能整理一下
基于Web的IM简介 -
whxtbest:
whxtbest 写道2里面:如果T本身就是重复的话 比如 ...
关于后缀树的一些理解 -
whxtbest:
2里面:如果T本身就是重复的话 比如S是aaab,T是aa ...
关于后缀树的一些理解 -
刘亮love小雪:
谢谢啦
Java 2D高级绘图 -
bluky999:
收集的资料挺多的 哈哈
基于Web的IM简介
1。启动客户端界面程序InstantMessagingGUI,通过配置文件初始化SIP协议栈,界面以及好友列表;
2。初始化IM消息监听器ListenerInstantMessaging和用户代理IMUserAgent,ListenerInstantMessaging负责界面事件的处理,IMUserAgent实现接口SipListener;
3。IMUserAgent初始化IMAckProcessing,IMRegisterProcessing,IMByeProcessing,IMSubscribeProcessing,IMNotifyProcessing,IMInfoProcessing,IMMessageProcessing,IMPublishProcessing以及PresenceManager
用户代理IMUserAgent调用SipFactory来创建HeaderFactory,AddressFactory,
MessageFactory,SipStack;
4。SipStack创建ListeningPoint和SipProvider;
5。当点击注册按钮时,调用ListenerInstantMessaging的signMenuMouseClicked(MouseEvent mouseEvent)方法,该方法调用IMRegisterProcessing和IMPublishProcessing来进行处理登陆,imRegisterProcessing.signIn(localSipURL.trim())负责处理登陆,imRegisterProcessing.signOut(localSipURL.trim())负责处理离线退出。主要实现方法如下:
Request request=messageFactory.createRequest(requestURI,"REGISTER",
callIdHeader,cseqHeader,fromHeader,toHeader,viaList,maxForwardsHeader);
ClientTransaction clientTransaction=sipProvider.getNewClientTransaction(request);
clientTransaction.sendRequest();
如果用户选择离线,则imPublishProcessing.sendPublish(localSipURL.trim(),"offline")来发布离线消息。
6。IMUserAgent的方法processRequest(RequestEvent requestEvent)处理所有要发送的请求,主要实现如下:
if (request.getMethod().equals(Request.ACK)) {
imAckProcessing.processAck(requestCloned, serverTransaction);
}
else if (request.getMethod().equals(Request.BYE)) {
imByeProcessing.processBye(requestCloned,serverTransaction);
}
else if (request.getMethod().equals("MESSAGE")) {
imMessageProcessing.processMessage(requestCloned,
serverTransaction);
}
else if (request.getMethod().equals("INFO")) {
imInfoProcessing.processInfo(requestCloned,serverTransaction);
}
else if (request.getMethod().equals("SUBSCRIBE")) {
imSubscribeProcessing.processSubscribe
(requestCloned,serverTransaction);
}
else if (request.getMethod().equals("NOTIFY")) {
imNotifyProcessing.processNotify(requestCloned,serverTransaction);
}
方法processResponse(ResponseEvent responseEvent)处理所有收到的响应,主要实现如下:
if ( response.getStatusCode()==Response.OK ||
response.getStatusCode()==202 ){
if (cseqHeader.getMethod().equals("REGISTER") ) {
imRegisterProcessing.processOK(responseCloned,clientTransaction);
}
if (cseqHeader.getMethod().equals("MESSAGE") ) {
imMessageProcessing.processOK(responseCloned,clientTransaction);
}
if (cseqHeader.getMethod().equals("BYE") ) {
imByeProcessing.processOK(responseCloned,clientTransaction);
}
if (cseqHeader.getMethod().equals("SUBSCRIBE") ) {
imSubscribeProcessing.processOK(responseCloned,clientTransaction);
}
//Henrik Leion added NOTIFY processing
if (cseqHeader.getMethod().equals("NOTIFY") ) {
imNotifyProcessing.processOk(responseCloned,clientTransaction);
}
7。当用户注册登陆成功后,调用方法imRegisterProcessing.processOK(responseCloned,clientTransaction)来更新。更新界面显示,更新状态并且通知好友,订阅所有好友的状态,通知订阅的好友,重新打开正在进行的所有Chat sessions。好友的状态由PresenceManager来进行管理。
8。当用户状态改变时,通过如下方法:
IMNotifyProcessing imNotifyProcessing=imUA.getIMNotifyProcessing();
imNotifyProcessing.sendNotifyToAllSubscribers("open",localStatus);
来通知订阅者
9。当要进行聊天时,实例化RemoteSipURLFrame,在RemoteSipURLFrame里输入要聊天的对方URL,点确定后,产生ChatSessionManager来对会话进行管理。ChatSession负责会话,ChatFrame是会话框,按发送按钮时,会调用ChatSession的方法chatSession.sendIMActionPerformed(ActionEvent evt);来发送消息,然后sendIMActionPerformed(ActionEvent evt)方法会调用IMMessageProcessing的imMessageProcessing.sendMessage(localSipURL,remoteSipURL,text,this);来发送消息。发送的时候,IMUserAgent的processRequest会调用IMMessageProcessing的processMessage(Request request,ServerTransaction serverTransaction)对远端发送的请求进行处理,processResponse方法会调用IMMessageProcessing的processOK(Response responseCloned,ClientTransaction clientTransaction)来对远端的响应进行处理。远端的消息请求处理完毕后,会更新本地ChatFrame的内容并且发送ok回响给对方。客户收到ok回响后,表示对方已经收到,那么就把本地type的消息内容删除,更新ChatFrame的内容
2。初始化IM消息监听器ListenerInstantMessaging和用户代理IMUserAgent,ListenerInstantMessaging负责界面事件的处理,IMUserAgent实现接口SipListener;
3。IMUserAgent初始化IMAckProcessing,IMRegisterProcessing,IMByeProcessing,IMSubscribeProcessing,IMNotifyProcessing,IMInfoProcessing,IMMessageProcessing,IMPublishProcessing以及PresenceManager
用户代理IMUserAgent调用SipFactory来创建HeaderFactory,AddressFactory,
MessageFactory,SipStack;
4。SipStack创建ListeningPoint和SipProvider;
5。当点击注册按钮时,调用ListenerInstantMessaging的signMenuMouseClicked(MouseEvent mouseEvent)方法,该方法调用IMRegisterProcessing和IMPublishProcessing来进行处理登陆,imRegisterProcessing.signIn(localSipURL.trim())负责处理登陆,imRegisterProcessing.signOut(localSipURL.trim())负责处理离线退出。主要实现方法如下:
Request request=messageFactory.createRequest(requestURI,"REGISTER",
callIdHeader,cseqHeader,fromHeader,toHeader,viaList,maxForwardsHeader);
ClientTransaction clientTransaction=sipProvider.getNewClientTransaction(request);
clientTransaction.sendRequest();
如果用户选择离线,则imPublishProcessing.sendPublish(localSipURL.trim(),"offline")来发布离线消息。
6。IMUserAgent的方法processRequest(RequestEvent requestEvent)处理所有要发送的请求,主要实现如下:
if (request.getMethod().equals(Request.ACK)) {
imAckProcessing.processAck(requestCloned, serverTransaction);
}
else if (request.getMethod().equals(Request.BYE)) {
imByeProcessing.processBye(requestCloned,serverTransaction);
}
else if (request.getMethod().equals("MESSAGE")) {
imMessageProcessing.processMessage(requestCloned,
serverTransaction);
}
else if (request.getMethod().equals("INFO")) {
imInfoProcessing.processInfo(requestCloned,serverTransaction);
}
else if (request.getMethod().equals("SUBSCRIBE")) {
imSubscribeProcessing.processSubscribe
(requestCloned,serverTransaction);
}
else if (request.getMethod().equals("NOTIFY")) {
imNotifyProcessing.processNotify(requestCloned,serverTransaction);
}
方法processResponse(ResponseEvent responseEvent)处理所有收到的响应,主要实现如下:
if ( response.getStatusCode()==Response.OK ||
response.getStatusCode()==202 ){
if (cseqHeader.getMethod().equals("REGISTER") ) {
imRegisterProcessing.processOK(responseCloned,clientTransaction);
}
if (cseqHeader.getMethod().equals("MESSAGE") ) {
imMessageProcessing.processOK(responseCloned,clientTransaction);
}
if (cseqHeader.getMethod().equals("BYE") ) {
imByeProcessing.processOK(responseCloned,clientTransaction);
}
if (cseqHeader.getMethod().equals("SUBSCRIBE") ) {
imSubscribeProcessing.processOK(responseCloned,clientTransaction);
}
//Henrik Leion added NOTIFY processing
if (cseqHeader.getMethod().equals("NOTIFY") ) {
imNotifyProcessing.processOk(responseCloned,clientTransaction);
}
7。当用户注册登陆成功后,调用方法imRegisterProcessing.processOK(responseCloned,clientTransaction)来更新。更新界面显示,更新状态并且通知好友,订阅所有好友的状态,通知订阅的好友,重新打开正在进行的所有Chat sessions。好友的状态由PresenceManager来进行管理。
8。当用户状态改变时,通过如下方法:
IMNotifyProcessing imNotifyProcessing=imUA.getIMNotifyProcessing();
imNotifyProcessing.sendNotifyToAllSubscribers("open",localStatus);
来通知订阅者
9。当要进行聊天时,实例化RemoteSipURLFrame,在RemoteSipURLFrame里输入要聊天的对方URL,点确定后,产生ChatSessionManager来对会话进行管理。ChatSession负责会话,ChatFrame是会话框,按发送按钮时,会调用ChatSession的方法chatSession.sendIMActionPerformed(ActionEvent evt);来发送消息,然后sendIMActionPerformed(ActionEvent evt)方法会调用IMMessageProcessing的imMessageProcessing.sendMessage(localSipURL,remoteSipURL,text,this);来发送消息。发送的时候,IMUserAgent的processRequest会调用IMMessageProcessing的processMessage(Request request,ServerTransaction serverTransaction)对远端发送的请求进行处理,processResponse方法会调用IMMessageProcessing的processOK(Response responseCloned,ClientTransaction clientTransaction)来对远端的响应进行处理。远端的消息请求处理完毕后,会更新本地ChatFrame的内容并且发送ok回响给对方。客户收到ok回响后,表示对方已经收到,那么就把本地type的消息内容删除,更新ChatFrame的内容
发表评论
-
【转】SIP对Instant Message的支持——MESSAGE方法
2008-05-26 14:44 4430Instant Message是指用户间实时的短消息通信,这些 ... -
[转]RFC3428 IM(即时消息)
2008-05-26 14:41 2157即时消息(IM)指的是近似实时的消息交互。即时消息通常很短,虽 ... -
dialog, transaction, session之我见
2008-05-06 11:12 4490SIP中3个很重要的概念,就是dialog, session和 ... -
SIP应答头
2008-04-07 14:20 23461xx = 通知性应答 100 正在尝试 180 正在拨打 ... -
SIP Servlet知识点总结【更新】
2008-04-02 18:33 28291) sip.xml处理http请求的web应用里的概念一样: ... -
【转】Ethereal简介
2008-04-02 13:39 1492Ethereal是一个开放源码 ... -
启动sailfin时问题:CLI156 Could not start the domal的解决办法
2008-04-01 16:21 1782Default server domain can be cr ... -
Sailfin自带的例子CallSetup的实现过程
2008-03-21 18:22 19351. 首先,UAC(可以是X-lite等)向Registrar ... -
Eclipse环境下开发基于Sailfin的Sip Servlet应用
2008-03-21 18:01 7193SailFin项目由爱立信公司开发,它基于具有健壮性和可扩展性 ... -
SIP: From ,Contact, Via 和 Record-Route/Route head
2008-03-21 15:37 11836From: 如果一个SIP消息中没有Contact或者Reco ... -
SIP电话设计思路
2008-03-19 10:06 15781. caller调用方法Call creat ... -
sailfin安装方法
2008-03-10 18:06 1891https://sailfin.dev.java.net/do ... -
SIP协议简介
2008-02-20 04:25 2519SIP( Session Initiation Proto ... -
Jain Sip知识点总结
2008-02-20 03:36 16541)register的时候from头和to头一样 2)requ ... -
Jain-Sip API
2008-02-20 02:17 2777http://snad.ncsl.nist.gov/proj/ ... -
[更新]SIP Communicator功能总结
2008-02-01 01:05 17751) contact list的meta data可以重名名, ... -
sip-communicator
2008-01-31 01:11 1541http://www.sip-communicator.org ... -
How to configure Eclipse to compile and debug SIP
2008-01-30 00:42 1396http://www.sip-communicator.org ...
相关推荐
做SIP封装设计不可多得的好资料。需要的同学赶紧下载吧
Cadence系统级封装设计 Allegro Sip APD设计指南
本文档涉及SipServer的总体设计、模块设计、运行设计、安全设计等。 文档约定 本文档依照以下文件标准进行编写: 1)概要设计说明书模板(xxxxBRDS.Doc) 参考资料 1) 即时通讯系统软件构架文档II.doc 2) Resiprocate...
system in a package(SIP)需要设计SIP封装的同学可以拿走借鉴
《芯片SIP封装与工程设计》章节例子20201017.rar
IC SIP 封装 设计 电磁仿真 热仿真 结构仿真
SIP设计,芯片封装设计,sysyem in package 不可多得的好资料,需要的同学赶紧下载吧
该文档介绍了sip电话原理,以及sip呼叫的实现方案
SIP Inspector 是一个用来模拟不同的SIP消息和通讯情景的工具,可用来创建 SIP 信令、定制 SIP 消息以及兼容输入和输出的消息包,该工具还可以直接从 pcap 文件中播放 RTP 流。
VoIP系统及其SIP协议设计 Phone: ===================== 网络电话例程,可以连接本机做测试!
sip 协议题库,有关于sip的一些基本的基础知识,考试或者面试等专业
SIP与诺基亚SIP工具 SIP与诺基亚SIP工具 SIP与诺基亚SIP工具
SIP/2.0 100 Trying Via: SIP/2.0/UDP 192.168.1.153:6060;branch=z9hG4bK1057312524;received=192.168.1.153 From: "873" <sip:873@192.168.1.151>;tag=399697897 To: "873" <sip:873@192.168.1.151> Call-ID: ...
SIP协议培训教材 SIP, H.323 and MGCP 什么是SIP? SIP 协议的使用环境 SIP 框架组成 SIP 消息 – 方法和响应 SIP 地址形式及路由方式 ...用SIP来设计网络的特点 SIP 与 H.323的比较 SIP的发展现况 小结
SIP协议栈的设计与实现,SIP协议栈的设计与实现
标准SIP协议客户端,电脑PC端软件,可配置自己SIP服务器使用,调试PBX,调试各种SIP服务器都很好用,支持主流语音编码!拿出来免费贡献,用的上的自行下载即可使用!SIP技术支持可以联系我们,标准SIP协议客户端,...
SIP是专为IP网络设计的多媒体会话控制协议,能发挥下一代网络和3G网的优势,将替代H.323成为开发下一代多媒体应用的基础协议。但SIP没有对网络会议提供直接支持,目前也还没有一个实用的基于SIP的网络会议服务系统,因而...
sip代码含义sip代码含义sip代码含义
chrome 浏览器 网页SIP WEBRTC 开发 呼叫中心需要的工具 开发网页软电话 必备