1、加載AnyChat for Web SDK庫javascript
首先仍是得先加載AnyChat for Web SDK庫java
<script language="javascript" type="text/javascript" src="./javascript/anychatsdk.js" charset="GB2312"></script>chrome
<script language="javascript" type="text/javascript" src="./javascript/anychatevent.js" charset="GB2312"></script>編程
2、全局變量定義windows
定義全局變量瀏覽器
var mDefaultServerAddr = "demo.anychat.cn"; // 默認服務器地址服務器
var mDefaultServerPort = 8906; // 默認服務器端口號網絡
var mSelfUserId = -1; // 本地用戶IDide
var mTargetUserId = -1; // 目標用戶ID(請求了對方的音視頻)函數
3、調用初始化函數
網頁加載完成後判斷有沒有安裝插件和插件是不是最新
// 頁面加載完成 初始化
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"; // 顯示提示層
}
4、調用登陸函數
在這裏服務器地址和端口都寫死,輸入用戶名就能夠登陸
登陸按鈕點擊事件:
// 登陸系統
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];
}
6、退出房間
退出房間調用函數
function OutOfRoom(){
BRAC_LeaveRoom(dwRoomid);
}
7、退出系統
退出系統調用函數
function OutOfSystem(){
BRAC_Logout();
}
到此,簡單的視頻聊天室就完成了,若是你是我的的研究,不講究界面和風格,甚至能夠直接試用,能夠和朋友直接視頻聊天了,若是你是開發工做室,那麼請一個設計師,優化界面和其餘功能部署,那麼你的開發基本完成了!