成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

基于 WebRTC 構(gòu)建 Web SIP Phone

Moxmi / 4416人閱讀

摘要:年月,被正式批準(zhǔn)成為信號(hào)協(xié)議之一,并成為體系結(jié)構(gòu)的一個(gè)永久單元。與一樣,是用于最主要的信令協(xié)議之一。一般來(lái)說(shuō),要么使用實(shí)體話機(jī),要么在系統(tǒng)上安裝基于的客戶端程序。實(shí)體話機(jī)硬件成本高,基于的客戶端往往兼容性差,無(wú)法跨平臺(tái),易被殺毒軟件查殺。

0 閱前須知

本文并不是教程,只是實(shí)現(xiàn)方案

我只是從WEB端考慮這個(gè)問(wèn)題,實(shí)際還需要后端sip服務(wù)器的配合

jsSIP有個(gè)非常不錯(cuò)的在線demo, 可以去哪里玩耍,很好玩呢 try jssip

1. 技術(shù)簡(jiǎn)介

WebRTC: WebRTC,名稱源自網(wǎng)頁(yè)即時(shí)通信(英語(yǔ):Web Real-Time Communication)的縮寫,是一個(gè)支持網(wǎng)頁(yè)瀏覽器進(jìn)行實(shí)時(shí)語(yǔ)音對(duì)話或視頻對(duì)話的API。它于2011年6月1日開(kāi)源并在Google、Mozilla、Opera支持下被納入萬(wàn)維網(wǎng)聯(lián)盟的W3C推薦標(biāo)準(zhǔn)

SIP: 會(huì)話發(fā)起協(xié)議(Session Initiation Protocol,縮寫SIP)是一個(gè)由IETF MMUSIC工作組開(kāi)發(fā)的協(xié)議,作為標(biāo)準(zhǔn)被提議用于創(chuàng)建,修改和終止包括視頻,語(yǔ)音,即時(shí)通信,在線游戲和虛擬現(xiàn)實(shí)等多種多媒體元素在內(nèi)的交互式用戶會(huì)話。2000年11月,SIP被正式批準(zhǔn)成為3GPP信號(hào)協(xié)議之一,并成為IMS體系結(jié)構(gòu)的一個(gè)永久單元。SIP與H.323一樣,是用于VoIP最主要的信令協(xié)議之一。

一般來(lái)說(shuō),要么使用實(shí)體話機(jī),要么在系統(tǒng)上安裝基于sip的客戶端程序。實(shí)體話機(jī)硬件成本高,基于sip的客戶端往往兼容性差,無(wú)法跨平臺(tái),易被殺毒軟件查殺。

WebRTC或許是更好的解決方案,只要一個(gè)瀏覽器就可以實(shí)時(shí)語(yǔ)音視頻通話,這是很不錯(cuò)的解決方案。WebSocket可以用來(lái)傳遞sip信令,而WebRTC用來(lái)實(shí)時(shí)傳輸語(yǔ)音視頻流。

2. 前端WebRTC實(shí)現(xiàn)方案

其實(shí)我們不需要去自己處理WebRTC的相關(guān)方法,或者去處理視頻或者媒體流。市面上已經(jīng)有不錯(cuò)的模塊可供選擇。

2.1 jsSIP

jsSIP是JavaScript SIP 庫(kù)

功能特點(diǎn)如下:

可以在瀏覽器或者Nodejs中運(yùn)行

使用WebSocket傳遞SIP協(xié)議

視頻音頻實(shí)時(shí)消息使用WebRTC

非常輕量

100%純JavaScript

使用簡(jiǎn)單并且具有強(qiáng)大的Api

服務(wù)端支持 OverSIP, Kamailio, Asterisk, OfficeSIP,reSIProcate,F(xiàn)rafos ABC SBC,TekSIP

是RFC 7118 and OverSIP的作者寫的

下面是使用JsSIP打電話的例子,非常簡(jiǎn)單吧

// Create our JsSIP instance and run it:

var socket = new JsSIP.WebSocketInterface("wss://sip.myhost.com");
var configuration = {
  sockets  : [ socket ],
  uri      : "sip:[email protected]",
  password : "superpassword"
};

var ua = new JsSIP.UA(configuration);

ua.start();

// Register callbacks to desired call events
var eventHandlers = {
  "progress": function(e) {
    console.log("call is in progress");
  },
  "failed": function(e) {
    console.log("call failed with cause: "+ e.data.cause);
  },
  "ended": function(e) {
    console.log("call ended with cause: "+ e.data.cause);
  },
  "confirmed": function(e) {
    console.log("call confirmed");
  }
};

var options = {
  "eventHandlers"    : eventHandlers,
  "mediaConstraints" : { "audio": true, "video": true }
};

var session = ua.call("sip:[email protected]", options);
2.2 SIP.js

sip.js項(xiàng)目實(shí)際是fork自jsSIP的,這里主要介紹它的服務(wù)端支持情況。其他接口自己自行查閱

FreeSWITCH

Asterisk

OnSIP

FreeSWITCH Legacy

3. 平臺(tái)考量

由于WebRTC對(duì)瀏覽器有較高的要求,你可以看看下圖,哪些瀏覽器支持WebRTC, 所有IE瀏覽器都不行,chrome系支持情況不錯(cuò)。

3.1 考量標(biāo)準(zhǔn)

跨平臺(tái)

兼容性

體積

集成性

硬件要求

開(kāi)發(fā)成本

3.2 考量表格
種類 適用平臺(tái) 優(yōu)點(diǎn) 缺點(diǎn)
基于electron開(kāi)發(fā)的桌面客戶端 window, mac, linux 跨平臺(tái),兼容好 要下載安裝,體積大(壓縮后至少48MB),對(duì)電腦性能有要求
開(kāi)發(fā)js sdk 現(xiàn)代瀏覽器 體積小,容易第三方集成 兼容差(因?yàn)樯婕暗絯ebRTC, IE11以及以都不行,對(duì)宿主環(huán)境要求高),客戶集成需要開(kāi)發(fā)量
開(kāi)發(fā)谷歌瀏覽器擴(kuò)展 谷歌瀏覽器 體積小 兼容差(僅限類chrome瀏覽器)
4 參考文檔 and 延伸閱讀 and 動(dòng)手實(shí)踐

Js SIP Getting Started

120行代碼實(shí)現(xiàn) 瀏覽器WebRTC視頻聊天

SIP協(xié)議狀態(tài)碼:

5 常見(jiàn)問(wèn)題 422: "Session Interval Too Small"

jsSIP默認(rèn)攜帶Session-Expires: 90的頭部信息,如果這個(gè)超時(shí)字段小于服務(wù)端的設(shè)定值,那么就會(huì)得到如下422的響應(yīng)。參見(jiàn)SIP協(xié)議狀態(tài)碼:, 可以在call請(qǐng)求中設(shè)置sessionTimersExpires, 使其超過(guò)服務(wù)端的設(shè)定值即可

call(targer, options
)
option.sessionTimersExpires
Number (in seconds) for the default Session Timers interval (default value is 90, do not set a lower value).
6 最后,你我共勉

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/90363.html

相關(guān)文章

  • JavaScript 是如何工作的:WebRTC 和對(duì)等網(wǎng)絡(luò)的機(jī)制!

    摘要:為了使連接起作用,對(duì)等方必須獲取元數(shù)據(jù)的本地媒體條件例如,分辨率和編解碼器功能,并收集應(yīng)用程序主機(jī)的可能網(wǎng)絡(luò)地址,用于來(lái)回傳遞這些關(guān)鍵信息的信令機(jī)制并未內(nèi)置到中。所有特定于多媒體的元數(shù)據(jù)都使用協(xié)議傳遞。 這是專門探索 JavaScript 及其所構(gòu)建的組件的系列文章的第 18 篇。 想閱讀更多優(yōu)質(zhì)文章請(qǐng)猛戳GitHub博客,一年百來(lái)篇優(yōu)質(zhì)文章等著你! 如果你錯(cuò)過(guò)了前面的章節(jié),可以在這里...

    XBaron 評(píng)論0 收藏0
  • WebRTC 及點(diǎn)對(duì)點(diǎn)網(wǎng)絡(luò)通信機(jī)制

    摘要:本質(zhì)上允許網(wǎng)頁(yè)程序創(chuàng)建點(diǎn)對(duì)點(diǎn)通信,我們將會(huì)在隨后的章節(jié)中進(jìn)行介紹。信令涉及網(wǎng)絡(luò)檢索和穿透,會(huì)話創(chuàng)建及管理,通信安全,媒體功能元數(shù)據(jù)和調(diào)制及錯(cuò)誤處理。這樣就會(huì)完全建立及激活節(jié)點(diǎn)間的網(wǎng)絡(luò)套接字會(huì)話。 原文請(qǐng)查閱這里,略有刪減,本文采用知識(shí)共享署名 4.0 國(guó)際許可協(xié)議共享,BY Troland。 這是 JavaScript 工作原理第十八章。 概述 何為 WebRTC ?首先,字面上已經(jīng)...

    Rango 評(píng)論0 收藏0
  • 這是一篇RTC(Real-time Communications,實(shí)時(shí)通信)的普及帖

    摘要:隨著通信的發(fā)展,實(shí)時(shí)音視頻服務(wù)將進(jìn)一步覆蓋更多的生活場(chǎng)景。什么是實(shí)時(shí)通訊,我們很容易把和混淆。另外的延遲是毫秒級(jí),在正常的網(wǎng)絡(luò)情況下,延遲在之間,可以多方通話實(shí)時(shí)互動(dòng)。這篇文章主要是圍繞告訴大家什么是,能解決什么問(wèn)題的普及貼。2020年初爆發(fā)的疫情,催生了在線教育、視頻會(huì)議、遠(yuǎn)程醫(yī)療等實(shí)時(shí)音視頻應(yīng)用的大規(guī)模增長(zhǎng),也使得服務(wù)于這些場(chǎng)景背后的底層框架RTC技術(shù)站上了風(fēng)口。早在 2010 年,Go...

    Tecode 評(píng)論0 收藏0
  • 使用WebRTC搭建前端視頻聊天室——入門篇

    摘要:在處于使用了設(shè)備的私有網(wǎng)絡(luò)中的主機(jī)之間需要建立連接時(shí)需要使用穿越技術(shù)。目前已經(jīng)有很多穿越技術(shù),但沒(méi)有一項(xiàng)是完美的,因?yàn)榈男袨槭欠菢?biāo)準(zhǔn)化的。 什么是WebRTC? 眾所周知,瀏覽器本身不支持相互之間直接建立信道進(jìn)行通信,都是通過(guò)服務(wù)器進(jìn)行中轉(zhuǎn)。比如現(xiàn)在有兩個(gè)客戶端,甲和乙,他們倆想要通信,首先需要甲和服務(wù)器、乙和服務(wù)器之間建立信道。甲給乙發(fā)送消息時(shí),甲先將消息發(fā)送到服務(wù)器上,服務(wù)器對(duì)甲...

    Carl 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<