1. 程式人生 > >瀏覽器上的音訊即時通訊應用開發建議

瀏覽器上的音訊即時通訊應用開發建議

現在網上很多朋友在弄網頁的視訊聊天室

通過學習,我自己也做了個簡單的小例子,幾十行JavaScript指令碼就能輕鬆實現視訊通話;也不用去下載指定的什麼瀏覽器,因為IE、firefox、chrome等windows平臺主流瀏覽器全部通過,完美執行。下邊就跟大夥分享分享我的成果,佈局程式碼就不貼出來了,只貼JavaScript指令碼。
  1. 支援Windows平臺瀏覽器上的音訊即時通訊應用開發
  2. 提供JavaScript語言API介面,指令碼程式設計
  3. 相容IE、Chrome、Firefox、360、遨遊等主流瀏覽器
  4. 支援iOS、Android、PC等裝置和Web之間的互聯互通

一、載入AnyChat for Web SDK庫

首先還是得先載入AnyChat for Web SDK庫

<script language="javascript" type="text/javascript" src="./javascript/anychatsdk.js" charset="GB2312"></script>
<script language="javascript" type="text/javascript" src="./javascript/anychatevent.js" charset="GB2312"></script>

二、全域性變數定義

 定義全域性變數

var mDefaultServerAddr = "demo.anychat.cn";		// 預設伺服器地址
var mDefaultServerPort = 8906; 				// 預設伺服器埠號
var mSelfUserId = -1; 					// 本地使用者ID
var mTargetUserId = -1; 				// 目標使用者ID(請求了對方的音視訊)

三、呼叫初始化函式

網頁載入完成後判斷有沒有安裝外掛和外掛是否是最新

// 頁面載入完成 初始化
function LogicInit() {    // 初始化   
    var NEED_ANYCHAT_APILEVEL = "0";
    var errorcode = BRAC_InitSDK(NEED_ANYCHAT_APILEVEL);
    if (errorcode == GV_ERR_SUCCESS)    // 初始化外掛成功   
        document.getElementById("login_div").style.display = "block";  // 顯示登入介面   
    else    // 沒有安裝外掛,或是外掛版本太舊,顯示外掛下載介面   
        document.getElementById("prompt_div").style.display = "block";    // 顯示提示層   
}

四、呼叫登入函式

在這裡伺服器地址和埠都寫死,輸入使用者名稱就可以登入

登入按鈕點選事件:

// 登入系統
function LoginToHall() {
    BRAC_Connect(mDefaultServerAddr, mDefaultServerPort);  // 連線伺服器   
    BRAC_Login(document.getElementById("username").value, "", 0);    // 登入系統,密碼為空也可登入   
}

呼叫登入函式後首先會觸發連線伺服器函式

// 客戶端連線伺服器,bSuccess表示是否連線成功,errorcode表示出錯程式碼
function OnAnyChatConnect(bSuccess, errorcode) {
    if (errorcode == 0) { }    // 連線伺服器成功       
     else alert("連線伺服器失敗");      //連線失敗作提示,此時系統不會觸發登入系統函式
}

連線伺服器成功後會觸發登入系統回撥函式

// 客戶端登入系統,dwUserId表示自己的使用者ID號,errorcode表示登入結果:0 成功,否則為出錯程式碼,參考出錯程式碼定義
function OnAnyChatLoginSystem(dwUserId, errorcode) {
    if (errorcode == 0) {    // 登入成功,顯示大廳介面,隱藏登入介面。失敗的話什麼也不做,維持原狀   
        mSelfUserId = dwUserId; 
        document.getElementById("login_div").style.display = "none";   //隱藏登入介面   
        document.getElementById("hall_div").style.display = "block";   //顯示大廳介面   
    }
}

、呼叫進入房間函式

登入成功後顯示大廳,大廳裡就個輸入框和一個 進入房間 按鈕

點選 進入房間 按鈕 呼叫函式

// 進入房間
function EnterRoom(){    // 進入自定義房間
    BRAC_EnterRoom(parseInt(document.getElementById("customroomid").value), "", 0);  //進入房間   
}

進入房間觸發回撥函式

// 客戶端進入房間,dwRoomId表示所進入房間的ID號,errorcode表示是否進入房間:0成功進入,否則為出錯程式碼
function OnAnyChatEnterRoom(dwRoomId, errorcode) {
    if (errorcode == 0) {  // 進入房間成功,顯示房間介面,隱藏大廳介面;進入房間失敗時不作任何動作   
        document.getElementById("hall_div").style.display = "none"; //隱藏大廳介面   
        document.getElementById("room_div").style.display = "block";  //顯示房間介面   
        BRAC_UserCameraControl(mSelfUserId, 1);  // 開啟本地視訊   
        BRAC_UserSpeakControl(mSelfUserId, 1);   // 開啟本地語音                   
        // 設定本地視訊顯示位置   
        BRAC_SetVideoPos(mSelfUserId, document.getElementById("AnyChatLocalVideoDiv"), "ANYCHAT_VIDEO_LOCAL");
        // 設定遠端視訊顯示位置(沒有關聯到使用者,只是佔位置)                         
        BRAC_SetVideoPos(0, document.getElementById("AnyChatRemoteVideoDiv"), "ANYCHAT_VIDEO_REMOTE");
    }
}


進入房間時,會觸發線上使用者回撥函式

// 收到當前房間的線上使用者資訊,進入房間後觸發一次,dwUserCount表示線上使用者數(包含自己),dwRoomId表示房間ID
function OnAnyChatRoomOnlineUser(dwUserCount, dwRoomId) {
    // 判斷是否需要關閉之前已請求的使用者音視訊資料       
    if (mTargetUserId != -1) {      // mTargetUserId 表示  上次視訊會話的使用者ID  為自定義變數           
        BRAC_UserCameraControl(mTargetUserId, 0);     // 關閉遠端視訊      
        BRAC_UserSpeakControl(mTargetUserId, 0);     // 關閉遠端語音
        mTargetUserId = -1;
    }
    if (dwUserCount > 1)     // 在該函式中判斷是否有線上使用者,有的話就開啟其中一個遠端視訊
        SetTheVideo();
}

有使用者退出房間時判斷是否遠端使用者,並作出相應操作

// 使用者進入(離開)房間,dwUserId表示使用者ID號,bEnterRoom表示該使用者是進入(1)或離開(0)房間
function OnAnyChatUserAtRoom(dwUserId, bEnterRoom) {
    if (bEnterRoom == 1)
        if (mTargetUserId == -1) SetTheVideo();
    else {
        if (mTargetUserId == dwUserId)
            mTargetUserId = -1;
    }
}

傳送資訊時呼叫函式

// 傳送資訊
function SendMessage() {
    BRAC_SendTextMessage(0, 0, document.getElementById("SendMsg").innerHTML);     //呼叫傳送資訊函式   Msg:資訊內容
    document.getElementById("ReceiveMsg").innerHTML += "我:" + document.getElementById("SendMsg").innerHTML + "<br />";
    document.getElementById("SendMsg").innerHTML = "";
}

收到線上使用者發來資訊時會觸發函式

// 收到文字訊息
function OnAnyChatTextMessage(dwFromUserId, dwToUserId, bSecret, lpMsgBuf, dwLen) {
    document.getElementById("ReceiveMsg").innerHTML += BRAC_GetUserName(dwFromUserId) + ":" + lpMsgBuf + "<br />";  // 收到資訊顯示到接收框
}

自定義函式

//自定義函式 請求遠端視訊使用者
function SetTheVideo() {
    var useridlist = BRAC_GetOnlineUser();    // 獲取所有線上使用者ID   
    BRAC_UserCameraControl(useridlist[0], 1);   // 請求對方視訊   
    BRAC_UserSpeakControl(useridlist[0], 1);   // 請求對方語音   
    BRAC_SetVideoPos(useridlist[0], document.getElementById("AnyChatRemoteVideoDiv"), "ANYCHAT_VIDEO_REMOTE");    // 設定遠端視訊顯示位置
    mTargetUserId = useridlist[0];
}

六、退出房間

退出房間呼叫函式

function OutOfRoom(){        
    BRAC_LeaveRoom(dwRoomid);
}

七、退出系統

退出系統呼叫函式

function OutOfSystem(){        
    BRAC_Logout();
}

到此,簡單的視訊聊天室就完成了...

相關推薦

瀏覽器音訊即時通訊應用開發建議

現在網上很多朋友在弄網頁的視訊聊天室 通過學習,我自己也做了個簡單的小例子,幾十行JavaScript指令碼就能輕鬆實現視訊通話;也不用去下載指定的什麼瀏覽器,因為IE、firefox、chrome等windows平臺主流瀏覽器全部通過,完美執行。下邊就跟大夥分享分享我的成

基於Openfire Smack開發即時通訊應用、搭建Openfire伺服器(一)

一:Openfire是什麼? Openfire 是基於XMPP 協議的IM 的伺服器端的一個實現,雖然當兩個使用者連線後,可以通過點對點的方式來發送訊息,但是使用者還是需要連線到伺服器來獲取一些連線資訊和通訊資訊的,所以伺服器端是必須要實現的。Openf

數字資產交易管理即時通訊平臺,區塊鏈IM即時通訊系統開發數字資產交易

區塊鏈 watermark 客戶 架構設計方法 這一 jpg src 比特 得到 從幣圈玩家的角度來看數字資產交易所的即時通訊問題,一直都存在著巨大的鴻溝。溝通難的問題一直沒有得到解決,之前對於客戶關系管理或者用戶與用戶之間都只是建立以論壇或者交易所聊天框的形式進行溝通。為

區塊鏈資產交易所搭建IM即時通訊系統開發

競爭 全球 演進 模式 結合 數字資產 傳統 搜索 早期 區塊鏈資產交易所搭建IM即時通訊系統開發 [本文由源中瑞塗先生編輯/交易所開發VX搜索:ruiec999]隨著數字資產交易市場的演進和機構投資者的參與,交易所領域創業面臨的合規、安全、專業、透明等問題也逐漸成為其新的

深圳區塊鏈交易系統開發,IM即時通訊app開發

屬性 所有 提高 區塊 一個 公有 即時通訊 控制 信任 深圳區塊鏈交易系統開發,IM即時通訊app開發 什麽是區塊鏈? 從技術上講,區塊鏈是區塊的鏈接,一個區塊是一組有序的交易。如果你不理解最後一句話,你可以把區塊鏈看作是一個擁有一些附加屬性的數據庫的一個子集。 我們要了

即時通訊軟體開發 需要用到什麼技術

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

社交即時通訊軟體開發,區塊鏈聊天行情軟體app開發

社交即時通訊軟體開發,區塊鏈聊天行情軟體app開發 隨著區塊鏈被越來越多人所關注,大量的資金進入這個領域之中,也不斷催化區塊鏈技術進一步成熟。不過即使區塊鏈這麼神奇,社交應用都是無法缺少的存在,所以,區塊鏈社交媒體出現在一些人的視野之中,它正在顛覆人們傳統的網際網路社交思維。 源中瑞社交軟體

Websocket全講解。跨平臺的通訊協議 !!基於websocket的高併發即時通訊伺服器開發

本博文,保證不用裝B的話語和太多專業的語言,保證簡單易懂,只要懂JAVAEE開發的人都可以看懂。 本博文發表目的是,目前網上針對Websocket的資料太散亂,導致初學者的知識體系零零散散,學習困難加大。本博加以整理,並且實踐。 所用核心技術選型:

基於nodejs + websocket 搭建即時通訊應用

如果說AJAX是像手機發簡訊一樣,傳送資訊,獲取資訊,那麼websocket技術則是打電話這樣。Web領域的實時推送技術,也被稱作Realtime技術。這種技術要達到的目的是讓使用者不需要重新整理瀏覽器就可以獲得實時更新。在以前你可能會使用AJAX進行輪詢,這造成了伺服器的多

仿QQ即時通訊軟體開發-賴國榮-專題視訊課程

仿QQ即時通訊軟體開發—7495人已學習 課程介紹        會使用JAVA的Swing做UI,學會用JAVA操作資料庫,用Java的網路程式設計,多執行緒程式設計,製作一個仿QQ的即時通訊軟體,實現在區域網或者網際網路通訊課程收益    製作仿QQ即時通訊軟體,實現在區

openfire+smack4.2.2構建即時通訊應用遇到的各種坑

第一次寫部落格。 發現在搭建伺服器,寫程式碼的過程中等過程中,遇到了許多坑,費了許多時間。如果不記下來,會忘記許多。 正好現在新版smack的資料比較少,查的可費勁了還查不到需要的。 分享給大家。 首先,回顧下流程。 在官網下載openfire,spark,smack。op

android即時通訊軟體開發教程(asmack+openfire+spark)一

      本人這陣子因為需求的原因,需要做一個android即時通訊軟體,所以接下來分享我這陣子的開發心得。       這一章主要是搭建android通訊軟體的伺服器環境,並且體驗自己開發的通訊軟體的聊天功能。       首先,要了解開發所用的東西asmack+ope

國產化即時通訊系統開發 -- 使用Avalonia實現GGTalk的UI介面(Linux、Ubuntu、UOS、中標麒麟)

距離2013年開源GGTalk以來,7年已經過去了,GGTalk現在有了完整的PC版、安卓版、iOS版(即將釋出),以及Xamarin版本。 然而,時代一直在變化,在今天,有個趨勢越來越明顯,那就是政府系統將逐漸遷移到Linux以及國產化的作業系統和資料庫上面來。 所以,GGTalk也將隨順這一必然的趨勢,服

MQTT是IBM開發的一個即時通訊協議,構建於TCP/IP協議,是物聯網IoT的訂閱協議,借助消息推送功能,可以更好地實現遠程控制

集合 cap 消息處理 簡易 遠程控制 mes ogr 設計思想 成本 最近一直做物聯網方面的開發,以下內容關於使用MQTT過程中遇到問題的記錄以及需要掌握的機制原理,主要講解理論。 背景 MQTT是IBM開發的一個即時通訊協議。MQTT構建於TCP/IP協議上

Oboe,安卓的低延遲音訊應用開發

谷歌已經釋出了第一個生產就緒的Oboe版本。Oboe是一個C++庫,它用來構建在99%的安卓裝置上都有著最低可能延遲的高效能音訊應用。 需要構建音樂類遊戲,音訊應用等的開發者通常不得不處理延遲問題。Oboe的目標是通過提供一個簡單的與安卓API 16+(Jelly Bean)版本相容的API來解決這些延遲問

即時通訊音視訊開發(七):音訊基礎及編碼原理入門

前言 即時通訊應用中的實時音視訊技術,幾乎是IM開發中的最後一道高牆。原因在於:實時音視訊技術 = 音視訊處理技術 + 網路傳輸技術 的橫向技術應用集合體,而公共網際網路不是為了實時通訊設計的。 系列文章 《即時通訊音視訊開發(五):認識主流視訊編碼技術H.264》 《即時

即時通訊音視訊開發(六):如何開始音訊編解碼技術的學習

前言 即時通訊應用中的實時音視訊技術,幾乎是IM開發中的最後一道高牆。原因在於:實時音視訊技術 = 音視訊處理技術 + 網路傳輸技術 的橫向技術應用集合體,而公共網際網路不是為了實時通訊設計的。 系列文章 《即時通訊音視訊開發(四):視訊編解碼之預測技術介紹》 《即時通訊音

即時通訊 音視訊聊天室開發建議

目前網上視訊聊天室、視訊會議軟體、可視IP電話軟體隨處可見,你是否想自己做一個玩玩?其實這類軟體無非是視訊加上網路而建成的。如果熟悉視訊捕 捉和網路傳輸技術,根本就難不倒你。本文詳細介紹瞭如何利用別人提供的sdk來開發視訊聊天室 首先介紹一下視訊聊天技術發展歷程   1、 

即時通訊開發

界面 pan sim sat edit log ssi 設置 ted 第一步:設置基本配置AppID:app_idAppSecret:app_secret用戶ID:user_id設備ID:device_id第二步:創建WebSokect服務,取得session_id(Ses

高性能服務器開發基礎系列 (七)——開源一款即時通訊軟件的源碼

c++ 服務器 在我的《高性能服務器開發基礎系列》這個系列的第一篇至第六篇都是講了一些零散的不成體系的網絡編程細節。今天,在這篇文章中,我將介紹一款我自主開發的即時通訊軟件flamingo(中文:火烈鳥),並開源其服務器和pc客戶端代碼。以此來對前幾篇文章中說到的理論進行實踐。 代碼在github和c