【JsSIP】JsSIP.RTCSession-实例详情

类JsSIP.RTCSession表示WebRTC媒体(音频/视频)会话。它可以由本地用户发起,也可以由远程对等方发起。

在内部,它持有一个RTCPeerConnection实例,可通过connection属性进行访问。

实例属性

connection

与此会话关联的基础RTCPeerConnection实例。使用它可以设置与WebRTC相关的事件(如onaddstream、onaddtrack等)。

请注意,对于传出调用,RTCPeerConnection是在调用ua.call()之后设置的。但是,对于传入呼叫,RTCPeerConnection是在调用session.answer()之后设置的。

direction

指示会话启动者的字符串。当会话由远程对等方启动时,可能的值为“incoming”,当会话由本地用户启动时,值为“outgoing”。

local_identity

JsSIP.NameAddrHeader实例,指示本地标识。当方向为“传出”时,它与INVITE 的From标头值相对应,当方向为为“传入”时,与To标头值对应

remote_identity

JsSIP.NameAddrHeader实例,指示远程标识。当方向为“传出”时,它与INVITE的To标头值相对应,当方向为为“传入”时,与From标头值相对应

start_time

Date对象,指示会话开始的时间。在已接受的事件被激发时获取其值。

end_time

Date对象,指示会话结束的时间。在激发结束事件时获取其值。

data

应用程序的一个对象,用于存储与此会话相关联的自定义信息。用于应用程序使用的自定义会话空对象。开发人员可以在此处添加自定义的属性/值对。

实例方法

isInProgress()

如果会话处于进行中状态(未建立且未结束),则返回true。

isEstablished()

如果会话已建立,则返回true。

isEnded()

如果会话结束,则返回true。

isReadyToReOffer()

如果会话已准备好进行SDP重新协商(hold()、unhold()或regregate()方法),则返回true。

answer(options)

回答传入会话。此方法仅适用于传入会话。

options:具有额外参数的可选对象(extraHeaders =>用于200 OK响应的具有额外SIP头的字符串数组。mediaConstraints =>具有两个有效字段(audio和video)的对象,指示会话是否打算使用音频和/或视频以及要使用的约束。默认值是根据接收到的SDP offer设置的。mediaStream =>要传输到另一端的MediaStream。pcConfig =>表示RTCPeerConnection RTCConfiguration的对象。rtcConstraints =>表示RTCPeerConnection约束的对象。rtcAnswerConstraints =>对象,表示RTCPeerConnection createAnswer()的约束。rtcOfferConstraints =>对象,表示RTCPeerConnection createOffer()的约束(用于未来传入的reINVITE而不提供SDP)。sessionTimersExpires =>默认会话计时器间隔的数字(以秒为单位)(默认值为90,不要设置较低的值)。

INVALID_STATE_ERROR (抛出异常)

JsSIP中的某些函数在某些情况下可能引发异常(请参阅W3C定义的DOMException)。以下是JsSIP中的DOMException列表:

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

终止当前会话,无论其方向或状态如何。

根据会话的状态,此功能可能会发送CANCEL请求、非2xx最终响应、BYE请求,甚至不发送请求。

对于传入会话,如果用户没有回答传入的INVITE,此函数将发送非2xx最终响应,其中包含可选指定的状态代码和原因短语。480默认情况下会响应Unavailable。

或传出会话,如果原始INVITE尚未发送,则永远不会发送。如果原始INVITE没有得到最终响应的应答,则行为取决于是否已经接收到临时响应。如果收到临时响应,将发送CANCEL请求。如果没有接收到临时响应,则该功能将不会根据RFC 3261发送CANCEL。如果收到临时响应,CANCEL请求将自动发送。

对于传入和传出会话,如果INVITE会话已得到最终响应,则将发送BYE请求。

options:具有额外参数的可选对象(extraHeaders =>具有用于MESSAGE请求的额外SIP标头的字符串数组。status_code =>300到699之间的数字,表示SIP响应代码。)

sendDTMF(tone, options=null)

使用SIP INFO方法发送一个或多个DTMF音调。

tone:由一个或多个有效DTMF符号组成的字符串或数字。

options:具有额外参数的可选对象(duration =>正十进制数字,表示音调的持续时间,以毫秒为单位。默认值为100。interToneGap =>十进制正数,表示两个音调之间的间隔(以毫秒为单位)。默认值为500。extraHeaders =>可选字符串数组,每个INFO请求都有额外的SIP头。)

例子:

call.sendDTMF(1);
call.sendDTMF(4);
var tones = '1234#';

var extraHeaders = [ 'X-Foo: foo', 'X-Bar: bar' ];

var options = {
  'duration': 160,
  'interToneGap': 1200,
  'extraHeaders': extraHeaders
};

call.sendDTMF(tones, options);
sendInfo(contentType, body=null, options=null)

发送SIP INFO消息。

contentType:表示SIP INFO消息内容类型标头字段值的字符串

body:可选字符串,表示SIP INFO消息正文

options:具有额外参数的可选对象(extraHeaders =>可选字符串数组,每个INFO请求都有额外的SIP头。)

hold(options=null, done=null)

通过发送Re-INVITE或UPDATE SIP请求将呼叫挂起。

如果此时无法重新协商,则返回false。

done:重新协商成功后调用的可选函数。

options:具有额外参数的可选对象(useUpdate =>布尔型发送UPDATE而不是重新INVITE。extraHeaders =>具有请求的额外SIP标头的字符串数组。)

unhold(options=null, done=null)

通过发送Re-INVITE或UPDATE SIP请求,从挂起状态恢复呼叫。

如果此时无法重新协商,则返回false。

done:重新协商成功后调用的可选函数。

options:具有额外参数的可选对象(useUpdate =>布尔型发送UPDATE而不是重新INVITE。extraHeaders =>具有请求的额外SIP标头的字符串数组。)

renegotiate(options=null, done=null)

强制重新协商SDP。在修改附加到底层RTCPeerConnection的本地流(通过connection属性)后很有用。如果此时无法重新协商,则返回false。

done:重新协商成功后调用的可选函数。

options:具有额外参数的可选对象(useUpdate =>布尔型发送UPDATE而不是重新INVITE。extraHeaders =>具有请求的额外SIP标头的字符串数组。rtcOfferConstraints =>表示RTCPeerConnection createOffer()约束的对象)

isOnHold()

返回一个属性为“local”和“remote”的对象,以及与每一个属性相关联的布尔值。它表示“本地”和/或“远程”对等端是否处于挂起状态。

rtcsession.isOnHold();

{
  'local': true,    // User has put the other peer on hold
  'remote': false   // Peer hasn't put user on hold
}
mute(options=null)

静音本地音频和/或视频。{audio:true,video:false}

unmute(options=null)

取消对本地音频和/或视频的静音。{audio:true,video:false}

isMuted()

返回一个属性为“audio”和“video”的对象,以及与它们相关联的布尔值。它表示本地“音频”和/或“视频”是否处于静音状态。

rtcsession.isMuted();

{
  'audio': true,   // Local audio is muted
  'video': false   // Local audio is not muted
}
refer(target, options=null)

发送一个对话框中的REFER方法,将给定的目标作为REFER To资源。

REFER方法隐式生成对引用状态的订阅。JsSIP对从对等端接收到的NOTIFY请求进行处理并以事件的形式呈现通过RTCSession.ReferSubscriber。

target:请参阅参考资料。表示目标用户名或完整SIP URI或JsSIP的字符串。URI实例。

options:具有额外参数的可选对象(extraHeaders =>REFER请求的具有额外SIP头的可选字符串数组。eventHandlers =>要为JsSIP注册的事件处理程序的可选对象RTCSession.ReferSubscriber。replaces =>可选JsSIP。要在引用目标处替换的对话框的RTCSession实例。这是此用户代理与Refer To资源所指向的用户代理之间的实时会话。)

resetLocalMedia()

通过启用本地媒体流的音频和视频轨道来重置本地媒体流(除非远程对等方处于挂起状态)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值