JSSIP了解-----JS在通讯中的应用(使用sip协议)---阿冬专栏!!
2015-12-02 11:43
411 查看
JSSIP--JS在通讯中的应用(使用sip协议)
原文 http://www.cnblogs.com/chenmuyue/archive/2013/04/03/2997857.html一 SIP协议是什么?
首先来说一下SIP协议,下面是百度百科的一些选的片段:SIP是类似于HTTP的基于文本的协议。SIP可以减少应用特别是高级应用的开发时间。由于基于IP协议的SIP利用了IP网络,固定网运营商也会逐渐认识到SIP技术对于他们的深远意义。SIP(Session Initiation Protocol)是一个应用层的信令控制协议。用于创建、修改和释放一个或多个参与者的会话。这些会话可以是Internet 多媒体会议 [1] 、IP电话或多媒体分发。会话的参与者可以通过组播(multicast)、网状单播(unicast)或两者的混合体进行通信。 SIP它既不是 会话描述协议 ,也不提供会议控制功能。 SIP
独立于传输层。SIP 会话使用多达四个主要组件:SIP 用户代理、SIP 注册服务器、SIP 代理服务器和 SIP 重定向服务器。这些系统通过传输包括了 SDP 协议(用于定义消息的内容和特点)的消息来完成 SIP 会话。下面概括性地介绍各个 SIP 组件及其在此过程中的作用。
简要来说,SIP协议用于IP电话等,不负责会话的具体描述,一般用来控制管理,如身份认证,控制连接等。在SIP协议中,使用用户代理UA进行对话,每个UA都是完全独立和平等的,合一进行直接的对话。在会话中,发送请求的一方成为UAC,即我们认为的客户端,接受的成为UAS,我们认为的服务器端。(是我们认为上的,实际应用以及在SIP协议中并未有什么区别,只是便于理解)。也可以通过中间的代理来进行通话。直接的一对一的通话是UAC--UAS。通过代理的话就是UAC-- (UAS-UAC) --UAS中间的 (UAS-UAC)即为中间的代理服务器,这种方式成为背靠背。关于更多此方面的和具体的东西,可以从下面的资料里看,说的挺明白清楚的,还有一些sip协议的具体格式,也都有。
http://www.freeswitch.org.cn/2010/05/08/di-si-zhang-sip.html
二 SIP协议栈
关于SIP的使用,有GOOGLE的一个JS的协议栈,还有一个JSSIP的协议栈。都是基于JS的。基于其他语言的,我暂时没有了解。两个都是开源的,可以直接使用或者修改。最近在看JSSIP的,所以就主要说一说JSSIP。
三 JSSIP的结构
JSSIP的资料在www.jssip.net上有,文档API,源代码,还有快速入门用法,还有单元测试用例都是有的。下面是一个简单的用法:
//Creating a JsSIP User Agent var configuration = { 'outbound_proxy_set': 'ws://sip-ws.example.com', 'uri': 'sip:alice@example.com', 'password': 'superpassword' }; var coolPhone = new JsSIP.UA(configuration); //Starting the User Agent coolPhone.start(); //Making outbound calls var useAudio = true; var useVideo = true; var views = { 'selfView': document.getElementById('my-video'), 'remoteView': document.getElementById('peer-video') }; var eventHandlers = { 'connecting': function(e){ // Your code here }, 'progress': function(e){ // Your code here }, 'failed': function(e){ // Your code here }, 'started': function(e){ // Your code here }, 'ended': function(e){ // Your code here } }; coolPhone.call('sip:bob@example.com', useAudio, useVideo, eventHandlers, views);
//Sending instant messaging var contentType = "text/plain"; var text = 'Hello Bob!'; var eventHandlers = { 'succeeded': function(e){ // Your code here }, 'failed': function(e){ // Your code here }; }; coolPhone.sendMessage('sip:bob@example.com', text, contentType, eventHandlers);
API和快速用法的程序,上面给的网址很清楚,就不再赘述。如果想要修改源代码供自己使用,可能就需要弄懂内部的结构了。只是单纯使用的话就不必了。
源码还是挺多的,2万行左右。里面的一些逻辑稍显复杂,我现在也没有每一行都看的很清楚,核心的部分大概懂了一些。以一些简单的图来说明吧:
框架图:
类图:
时序图:
相关文章推荐
- JS剖析正方形物体碰撞原理
- Gson解析json字符串、json数组转换成对象
- JavaScript了解---JsSip了解---阿冬专栏!!
- javascript实现自动填写表单实例简析
- JSP学习
- 纯js代码实现简单计算器
- 从HTML Components的衰落看Web Components的危机 HTML Components的一些特性 JavaScript什么叫端到端组件 自己对Polymer的意见
- Js常用方法
- js 等待几秒 每隔几秒 执行
- JS中如何实现sleep(休眠)的功能?
- js数组去重复
- MVC中处理Json和JS中处理Json对象
- 整理Javascript事件响应学习笔记
- js页面跳转整理
- JS弹出框,弹出层
- JS操作DOM元素属性和方法
- js数组方法
- 在html页面中展示JSON
- 原生JavaScript实现异步多文件上传
- ajaxupload.js上传报错处理方法