亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

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

Moxmi / 4560人閱讀

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

0 閱前須知

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

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

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

1. 技術(shù)簡介

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

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

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

WebRTC或許是更好的解決方案,只要一個瀏覽器就可以實時語音視頻通話,這是很不錯的解決方案。WebSocket可以用來傳遞sip信令,而WebRTC用來實時傳輸語音視頻流。

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

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

2.1 jsSIP

jsSIP是JavaScript SIP 庫

功能特點如下:

可以在瀏覽器或者Nodejs中運行

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

視頻音頻實時消息使用WebRTC

非常輕量

100%純JavaScript

使用簡單并且具有強大的Api

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

是RFC 7118 and OverSIP的作者寫的

下面是使用JsSIP打電話的例子,非常簡單吧

// Create our JsSIP instance and run it:

var socket = new JsSIP.WebSocketInterface("wss://sip.myhost.com");
var configuration = {
  sockets  : [ socket ],
  uri      : "sip:alice@example.com",
  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:bob@example.com", options);
2.2 SIP.js

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

FreeSWITCH

Asterisk

OnSIP

FreeSWITCH Legacy

3. 平臺考量

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

3.1 考量標準

跨平臺

兼容性

體積

集成性

硬件要求

開發(fā)成本

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

Js SIP Getting Started

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

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

5 常見問題 422: "Session Interval Too Small"

jsSIP默認攜帶Session-Expires: 90的頭部信息,如果這個超時字段小于服務(wù)端的設(shè)定值,那么就會得到如下422的響應(yīng)。參見SIP協(xié)議狀態(tài)碼:, 可以在call請求中設(shè)置sessionTimersExpires, 使其超過服務(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)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/90363.html

相關(guān)文章

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

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

    XBaron 評論0 收藏0
  • WebRTC 及點對點網(wǎng)絡(luò)通信機制

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

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

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

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

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

    Carl 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<