jsSip开发文档
(官网地址:http://www.jssip.net/)
完整案例demo下载地址: http://download.csdn.net/download/qq_39421580/10214712
概观:
1.JsSIP是一个简单易用的JavaScript库,它利用SIP和WebRTC的最新发展,在任何网站上提供全功能的SIP端点。
2.通过JsSIP ,只要几行代码,任何网站都可以通过音频,视频等获得实时通信功能。
特征:
1.通过WebSocket传输的 SIP。
2.音频/视频通话,即时消息和状态。
3.轻巧!
4.100%纯JavaScript从头开始构建。
5.易于使用和功能强大的用户API。
6.适用于OverSIP,Kamailio和Asterisk服务器。
入门:
一:1.JsSIP用户代理是JsSIP的核心元素。它表示与SIP帐户关联的SIP客户端。JsSIP用户代理是在类中定义的。JsSIP.UA
2.可以创建多个JsSIP用户代理(这对于在同一个Web应用程序中运行不同的SIP帐户很有用)。
二:创建一个jsSIP用户代理
JsSIP用户代理需要一个配置对象来进行初始化。
/**
* 创建websocket连接,连接地址最好是wss,本地测试可以使用ws,
* 如果信令服务使用FreeSWITCH,那么websocket连接地址如下:
* ws://FreeSWITCH所在服务器IP:5066 或
* wss://FreeSWITCH所在服务器IP:7443
*/
var socket = new JsSIP.WebSocketInterface('wss://sip.myhost.com');(详见三API)
/**
* User Agent配置参数,sockets表示信令服务器的连接集合,即可以
* 注册多个信令服务器;uri即注册用户的SIP地址,password为连接密
* 码;常用的参数还有register(true/false)表示是否直接注册;
* no_answer_timeout无应答超时时间等。
*/
var configuration = {
// freeswitch服务器地址
'outbound_proxy_set': 'ws://sip-ws.example.com',
'uri': 'sip:alice@example.com',
'password': 'superpassword'
};
// 使用上述配置创建User Agent
var coolPhone = new JsSIP.UA(configuration);
API说明
类 JsSIP
JsSIP主模块。
类 JsSIP.debug
默认情况下,JsSIP不向浏览器控制台记录任何内容。为了启用调试,请在浏览器控制台中运行以下命令并重新加载页面:
> JsSIP.debug.enable('JsSIP:*');
请注意,日志记录设置将存储在浏览器LocalStorage中。要禁用它,请在浏览器控制台中运行以下命令并重新加载页面:
> JsSIP.debug.disable('JsSIP:*');
JsSIP源代码树中的每个文件都提供了一个不同的调试标识符(全部以“JsSIP:”开头),它与文件名及其相对路径相匹配。
类 JsSIP.UA
JsSIP SIP用户代理类。
首先实例化:
用户代理关联到SIP用户帐户。这个类需要一些通过配置对象提供的初始化配置参数。检查完整的UA配置参数列表。
如果没有定义任何强制性参数或由于格式错误的参数值,此类的实例化将引发异常。
例
var socket = new JsSIP.WebSocketInterface('wss://sip.example.com');
var configuration = {
sockets : [ socket ],
uri : 'sip:alice@example.com',
ha1 : '350fe29ce3890bd85d105998b0a95cf7',
realm : 'sip.example.com'
};
var ua = new JsSIP.UA(configuration);
实例方法
start()
连接到信令服务器,并恢复以前的状态,如果以前停止。重新开始时,如果UA配置中的参数设置为,则向SIP域注册。registertrue
stop()
保存当前注册状态,正常注销并终止活动会话(如果有的话)后断开与信令服务器的连接。
register()
注册UA。
注意:如果register参数设置为true在UA配置参数,则UA将自动注册。
unregister(options=null)
取消注册UA。
参数为options
options对象中的字段all,可选,Boolean用于注销同一SIP用户的所有绑定。默认值是false。
例
var options = {
all: true
};
call(target, options=null)
拨打多媒体电话。
参数
Target 通话的目的地。String表示目标用户名或完整的SIP URI或JsSIP.URI实例。
Options 可选Object附加参数(见下文)。
options对象中的字段;
mediaConstraints Object有两个有效的字段(audio和video)指示会话是否打算使用音频和/或视频以及要使用的约束。默认值是audio并且video设置为true。
mediaStream MediaStream 传送到另一端。
pcConfig Object代表RTCPeerConnection RTCConfiguration。
rtcConstraints Object 表示RTCPeerconnection约束。
rtcOfferConstraints Object代表RTCPeerconnection的限制createOffer()。
rtcAnswerConstraints Object表示用于RTCPeerconnection约束createAnswer()(将被用于将来的输入REINVITE或UPDATE与SDP提供)。
eventHandlers Object事件处理程序的可选项将被注册到每个呼叫事件。为每个要通知的事件定义事件处理程序。
extraHeaders Array的Strings额外SIP头的INVITE请求。
Anonymous Boolean指示是否应该匿名完成呼叫。默认值是false。
sessionTimersExpires Number (以秒为单位)默认的会话定时器间隔(默认值是90,不要设置一个较低的值)。
例
// HTML5的元素,其中将显示本地和远程视频
var views = {
'selfView': document.getElementById('my-video'),
'remoteView': document.getElementById('peer-video')
};
//对所需的调用事件进行回调
var eventHandlers = {
'progress': function(data){ /* Your code here */ },
'failed': function(data){ /* Your code here */ },
'confirmed': function(data){ /* Your code here */ },
'ended': function(data){ /* Your code here */ }
};
var options = {
'eventHandlers': eventHandlers,
'extraHeaders': [ 'X-Foo: foo', 'X-Bar: bar' ],
'mediaConstraints': {'audio': true, 'video': true},
'pcConfig': {
'iceServers': [
{ 'urls': ['stun:a.example.com', 'stun:b.example.com'] },
{ 'urls': 'turn:example.com', 'username': 'foo', 'credential': ' 1234' }
]
}
};
ua.call('sip:bob@example.com', options);
sendMessage(target, body, options=null)
使用SIP MESSAGE方法发送即时消息。
参数
Target 消息的目的地。String表示目标用户名或完整的SIP URI或JsSIP.URI实例。
Body 消息内容。String代表消息的主体。
Options 可选Object附加参数(见下文)。
options对象中的字段:
contentType 可选String代表正文的内容类型。默认text/plain。
eventHandlers Object事件处理程序的可选项将被注册到每个JsSIP.Message事件。为每个要通知的事件定义事件处理程序。
extraHeaders 可选Array的Strings额外SIP头为每个MESSAGE请求。
例
var text = 'Hello Bob!';
var eventHandlers = {
'succeeded': function(data){ /* Your code here */ },
'failed': function(data){ /* Your code here */ };
};
var options = {
'eventHandlers': eventHandlers
};
ua.sendMessage('sip:bob@example.com', text, options);
terminateSessions(options=null)
终止正在进行的呼叫。
参数:
options 可选Object带有在JsSIP.RTCSession呼叫终止中定义的额外参数。
isRegistered()
true如果UA被注册,false则返回; 否则。
isConnected()
返回true运输是否连接,false否则。
Events(data事件)
JsSIP.UA类定义了一系列事件。他们每个人都允许回调函数注册,以便让用户执行每个给定的刺激处理程序。
Connecting:
为每个传输连接尝试而开火。
事件data字段
Socket JsSIP.Socket 实例正在连接。
Attempts Number 指示传输连接尝试。
Connected:
运输连接建立后触发。
事件data字段
Socket JsSIP.Socket 已连接的实例。
Disconnected:
传输连接尝试(或自动重新尝试)失败时触发。
事件data字段
Socket JsSIP.Socket 实例。
Error Boolean 指示套接字是否由于错误而断开连接
Code 可选Number指示套接字断开代码。
Reason