UNPKG

sip.js

Version:

A SIP library for JavaScript

144 lines (143 loc) 5.46 kB
import { URI } from "../../grammar/uri.js"; import { Body } from "../messages/body.js"; import { OutgoingByeRequest } from "../messages/methods/bye.js"; import { OutgoingInfoRequest } from "../messages/methods/info.js"; import { OutgoingInviteRequest, OutgoingInviteRequestDelegate } from "../messages/methods/invite.js"; import { OutgoingMessageRequest } from "../messages/methods/message.js"; import { OutgoingNotifyRequest } from "../messages/methods/notify.js"; import { OutgoingPrackRequest } from "../messages/methods/prack.js"; import { OutgoingReferRequest } from "../messages/methods/refer.js"; import { OutgoingRequestDelegate, RequestOptions } from "../messages/outgoing-request.js"; import { SessionDelegate } from "./session-delegate.js"; /** * Session. * @remarks * https://tools.ietf.org/html/rfc3261#section-13 * @public */ export interface Session { /** Session delegate. */ delegate: SessionDelegate | undefined; /** The session id. Equal to callId + localTag + remoteTag. */ readonly id: string; /** Call Id. */ readonly callId: string; /** Local Tag. */ readonly localTag: string; /** Local URI. */ readonly localURI: URI; /** Remote Tag. */ readonly remoteTag: string; /** Remote Target. */ readonly remoteTarget: URI; /** Remote URI. */ readonly remoteURI: URI; /** Session state. */ readonly sessionState: SessionState; /** Current state of the offer/answer exchange. */ readonly signalingState: SignalingState; /** The current answer if signalingState is stable. Otherwise undefined. */ readonly answer: Body | undefined; /** The current offer if signalingState is not initial or closed. Otherwise undefined. */ readonly offer: Body | undefined; /** * Destroy session. */ dispose(): void; /** * Send a BYE request. * Terminating a session. * https://tools.ietf.org/html/rfc3261#section-15 * @param delegate - Request delegate. * @param options - Options bucket. */ bye(delegate?: OutgoingRequestDelegate, options?: RequestOptions): OutgoingByeRequest; /** * Send an INFO request. * Exchange information during a session. * https://tools.ietf.org/html/rfc6086#section-4.2.1 * @param delegate - Request delegate. * @param options - Options bucket. */ info(delegate?: OutgoingRequestDelegate, options?: RequestOptions): OutgoingInfoRequest; /** * Send re-INVITE request. * Modifying a session. * https://tools.ietf.org/html/rfc3261#section-14.1 * @param delegate - Request delegate. * @param options - Options bucket. */ invite(delegate?: OutgoingInviteRequestDelegate, options?: RequestOptions): OutgoingInviteRequest; /** * Send MESSAGE request. * Deliver a message during a session. * https://tools.ietf.org/html/rfc3428#section-4 * @param delegate - Request delegate. * @param options - Options bucket. */ message(delegate?: OutgoingRequestDelegate, options?: RequestOptions): OutgoingMessageRequest; /** * Send NOTIFY request. * Inform referrer of transfer progress. * The use of this is limited to the implicit creation of subscription by REFER (historical). * Otherwise, notifiers MUST NOT create subscriptions except upon receipt of a SUBSCRIBE request. * https://tools.ietf.org/html/rfc3515#section-3.7 * @param delegate - Request delegate. * @param options - Options bucket. */ notify(delegate?: OutgoingRequestDelegate, options?: RequestOptions): OutgoingNotifyRequest; /** * Send PRACK request. * Acknowledge a reliable provisional response. * https://tools.ietf.org/html/rfc3262#section-4 * @param delegate - Request delegate. * @param options - Options bucket. */ prack(delegate?: OutgoingRequestDelegate, options?: RequestOptions): OutgoingPrackRequest; /** * Send REFER request. * Transfer a session. * https://tools.ietf.org/html/rfc3515#section-2.4.1 * @param delegate - Request delegate. * @param options - Options bucket. */ refer(delegate?: OutgoingRequestDelegate, options?: RequestOptions): OutgoingReferRequest; } /** * Session state. * @remarks * https://tools.ietf.org/html/rfc3261#section-13 * @public */ export declare enum SessionState { Initial = "Initial", Early = "Early", AckWait = "AckWait", Confirmed = "Confirmed", Terminated = "Terminated" } /** * Offer/Answer state. * @remarks * ```txt * Offer Answer RFC Ini Est Early * ------------------------------------------------------------------- * 1. INVITE Req. 2xx INVITE Resp. RFC 3261 Y Y N * 2. 2xx INVITE Resp. ACK Req. RFC 3261 Y Y N * 3. INVITE Req. 1xx-rel INVITE Resp. RFC 3262 Y Y N * 4. 1xx-rel INVITE Resp. PRACK Req. RFC 3262 Y Y N * 5. PRACK Req. 200 PRACK Resp. RFC 3262 N Y Y * 6. UPDATE Req. 2xx UPDATE Resp. RFC 3311 N Y Y * * Table 1: Summary of SIP Usage of the Offer/Answer Model * ``` * https://tools.ietf.org/html/rfc6337#section-2.2 * @public */ export declare enum SignalingState { Initial = "Initial", HaveLocalOffer = "HaveLocalOffer", HaveRemoteOffer = "HaveRemoteOffer", Stable = "Stable", Closed = "Closed" }