【JsSIP】UA 方法事件

文章详细介绍了JsSIP库中UserAgent类的功能,包括实例化过程、关键方法如start/stop/register/unregister/call等,以及与之关联的事件,如连接、注册状态变化和媒体通信事件。
摘要由CSDN通过智能技术生成

目录

实例化

方法

start()

stop()

register()

 unregister(options=null)

registrator() 

call(target, options=null)

sendMessage(target, body, options=null)

terminateSessions(options=null)

isRegistered()

isConnected()

get(parameter)

set(parameter, value) 

事件

connecting

connected 

disconnected

registered

unregistered

registrationFailed

registrationExpiring

newRTCSession

newMessage


实例化

用户代理与SIP用户帐户相关联。这个类的初始化需要一些配置参数,这些参数是通过配置对象提供的。检查完整的UA配置参数列表。如果未定义任何强制参数,或者由于参数值格式不正确,则此类的实例化将引发异常。

报错常数描述
CONFIGURATION_ERRORUA配置对象加载过程中出错。
INVALID_TARGET_ERROR目标不是有效的SIP URI,或者无法转换为有效的SIP URI。
INVALID_STATE_ERROR对象处于不适合执行给定操作的状态。

方法

start()

连接到信号服务器,并在以前停止的情况下恢复以前的状态。对于新的开始,如果UA配置中的register参数设置为true,则向SIP域注册。 

stop()

保存当前注册状态,并在正常注销和终止活动会话(如果有)后断开与信号服务器的连接。

register()

注册UA。注意:如果在UA配置参数中将register参数设置为true,UA将自动注册。

 unregister(options=null)

注销UA。var options = { all: true }; ua.unregister(options);

registrator() 

获取 JsSIP.Registrator 注册器实例。 

call(target, options=null)

拨打呼出的多媒体电话。

target:呼叫的目的地。表示目标用户名或完整SIP URI或JsSIP的字符串。URI实例。 

options :参数可选项(以下为参数详情)

mediaConstraints  =>具有两个有效字段(音频audio和视频video)的对象,指示会话是否打算使用音频和/或视频以及要使用的约束。默认值是音频和视频都设置为true。

mediaStream  =>要传输到另一端的MediaStream。

pcConfig  =>对象,表示RTCPeerConnection RTCConfiguration。

rtcConstraints  =>表示RTCPeerconnection约束的对象。

 rtcOfferConstraints  =>对象,表示RTCPeerconnection createOffer()的约束。

rtcAnswerConstraints  =>对象,表示RTCPeerconnection createAnswer()的约束(用于将来传入的reINVITE或带有SDP提供的UPDATE)。 

eventHandlers  =>要注册到每个调用事件的事件处理程序的可选对象。为要收到通知的每个事件定义一个事件处理程序。

extraHeaders  =>具有INVITE请求的额外SIP标头的字符串数组。

anonymous  =>布尔字段,指示是否应匿名进行调用。默认值为false。

sessionTimersExpires =>默认会话计时器间隔的数字(以秒为单位)(默认值为90,不要设置较低的值)。

// HTML5 <video> elements in which local and remote video will be shown
var views = {
  'selfView':   document.getElementById('my-video'),
  'remoteView': document.getElementById('peer-video')
};

// Register callbacks to desired call events
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方法发送即时消息。 

targrt:消息的目的地。表示目标用户名或完整SIP URI或JsSIP的字符串。URI实例。

body:消息内容。表示消息正文的字符串。

options:额外参数(如下)

contentType  =>可选字符串,表示正文的内容类型。默认text/plain。

eventHandlers. =>要注册到每个JsSIP的事件处理程序的可选对象。消息事件。为要收到通知的每个事件定义一个事件处理程序。

extraHeaders. =>可选字符串数组,每个MESSAGE请求都有额外的SIP头。

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:具有JsSIP中定义的额外参数的可选对象。用于呼叫终止的RTCSession。 

isRegistered()

如果UA已注册,则返回true,否则返回false。

isConnected()

如果已连接传输,则返回true,否则返回false。

get(parameter)

在运行时检索一次计算的配置参数。目前只能检索到realm和ha1。parameter:UA配置参数名称。

set(parameter, value) 

在运行时修改给定的UA配置参数(一旦启动)。目前只能修改display_name、password、realm和ha1。如果可以进行修改,则返回true。

事件

JsSIP。UA类定义了一系列事件。它们中的每一个都允许注册回调函数,以便用户为每个给定的事件执行一个处理程序。 

connecting

为每次传输连接尝试激发。事件参数字段(socket =>实例正在连接的JsSIP.socket。attempts =>指示传输连接尝试次数的数字。)

connected 

在建立传输连接时激发。事件参数字段(socket =>实例已经连接了的JsSIP.socket)

disconnected

当传输连接尝试(或自动重试)失败时激发。事件参数字段(socket =>JsSIP.socket实例。error =>布尔值,指示是否因错误而断开连接。code =>可选数字,指示断开的code值。reason =>字符串,指socket断开的原因)

registered

为成功注册而激发。事件参数字段(response =>JsSIP。接收到的SIP 2XX响应的IncomingResponse实例。)

unregistered

因注销而被解雇。在以下情况下会触发此事件:作为注销请求的结果。UA.unregister()。如果正在注册,则定期重新注册失败。事件参数字段(response =>JsSIP。接收到的一个 (un)REGISTER SIP请求的SIP响应的IncomingResponse实例。cause =>Failure and End Causes的值)

Failure and End Causes:JsSIP提供了一组原因,以便让用户知道是什么导致请求或会话失败。JsSIP中定义了此处暴露的所有原因。C.原因名称空间,因此,在提供原因字段的事件中接收到的任何原因都可以与其进行比较。

registrationFailed

由于注册失败而激发。事件参数字段(response。cause)

registrationExpiring

在注册到期前几秒钟激发。如果应用程序没有为此事件设置任何侦听器,JsSIP将像往常一样重新注册。如果应用程序订阅了此事件,它将负责在registrationExpiring事件中调用ua.register()(否则注册将过期)。此事件为应用程序提供了在重新注册之前执行异步操作的机会。对于那些在REGISTER请求中的自定义SIP标头中使用外部获得的“令牌”的环境很有用。

newRTCSession

为传入或传出会话/呼叫激发。

传入会话的事件参数字段(originator:'remote' =>新会话由远程对等方生成。session => JsSIP。会话的RTCSession实例。request =>JsSIP。接收到的INVITE请求的IncomingRequest实例)

传出会话的事件参数字段(originator:'local' =>新会话由远程本地生成。session => JsSIP。会话的RTCSession实例。request =>JsSIP。接收到的INVITE请求的OutgoingRequest实例)

newMessage

为传入或传出的MESSAGE请求激发。

传入MESSAGE的事件参数字段(originator:'remote' =>新会话由远程对等方生成。session => JsSIP。会话的Message实例。request =>JsSIP。接收到的MESSAGE请求的IncomingRequest实例)

传出MESSAGE的事件参数字段(originator:'local' =>新会话由远程本地生成。session => JsSIP。会话的Message实例。request =>JsSIP。接收到的MESSAGE请求的OutgoingRequest实例)

  • 30
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
jssip demo是一个基于JavaScript的开源软件库,用于实现SIP(Session Initiation Protocol,会话发起协议)通信协议的Web应用程序的开发。SIP是一种通信协议,用于建立、修改和解除多媒体会话,比如VoIP电话、视频通话等。 jssip demo提供了一个示例,用于演示如何使用jssip库来实现浏览器之间的实时通信。这个demo可以在网页上直接运行,不需要额外的软件安装。 在jssip demo中,我们可以看到一个网页界面,其中包含了拨号键盘、呼叫按钮等元素。我们可以输入电话号码,然后点击呼叫按钮,就可以建立起与对方的通话连接。 jssip demo的实现过程包括以下几个步骤: 1. 引入jssip库:在网页上引入jssip库的JavaScript文件。 2. 创建SIP用户:配置SIP服务器的信息,并创建一个SIP用户。 3. 建立连接:与SIP服务器建立WebSocket连接,以便进行通信。 4. 监听事件:监听SIP服务器发送的各种事件,比如呼叫建立、通话结束等。 5. 呼叫:在网页上输入对方的电话号码,点击呼叫按钮,发送呼叫请求给SIP服务器,并等待对方接听。 6. 通话:如果对方接听了呼叫请求,就可以进行实时通话。可以使用网页上的声音输入、输出设备,与对方进行语音通话。 通过jssip demo,我们可以了解到如何使用jssip库来开发基于Web的实时通信应用程序。这个demo提供了一个简单、易于理解的示例,可以作为我们开发自己应用程序的参考。无论是开发VoIP电话应用还是实时视频通话应用,jssip demo都是一个很好的起点。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值