Windows平台浏览器上的音频即时通讯应用开发
2013-04-24 16:04
232 查看
所使用的开发包的特点:(浏览器上的音频即时通讯应用开发)支持Windows平台浏览器上的音频即时通讯应用开发
提供JavaScript语言API接口,脚本编程
兼容IE、Chrome、Firefox、360、遨游等主流浏览器
支持iOS、Android、PC等设备和Web之间的互联互通
一、加载AnyChat for Web SDK库首先还是得先加载AnyChat for Web SDK库
三、调用初始化函数网页加载完成后判断有没有安装插件和插件是否是最新
进入房间时,会触发在线用户回调函数
提供JavaScript语言API接口,脚本编程
兼容IE、Chrome、Firefox、360、遨游等主流浏览器
支持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(); }到此,简单的视频聊天室就完成了...
相关文章推荐
- 【Python】学习selenium自动化测试:安装selenium+启动浏览器(windows平台、Linux Centos平台)
- 【VScode】VScode 浏览器预览HTML (windows+ubuntu+OS X平台)
- Windows 7平台三大浏览器对战
- APPLE浏览器争霸WINDOWS平台
- userAgent,JS这么屌的用户代理,你造吗?——判断浏览器内核、浏览器、浏览器平台、windows操作系统版本、移动设备、游戏系统
- userAgent,JS用户代理检测——判断浏览器内核、浏览器、浏览器平台、windows操作系统版本、移动设备、游戏系统
- 四大浏览器Windows 7平台多项测试对比
- 使用NPAPI编写跨平台(Windows/Linux/Mac)跨浏览器(Chrome/Firefox/Safari)的插件
- 基于Windows平台的AAC音频编码器和解码器
- 使用NPAPI编写跨平台(Windows/Linux/Mac)跨浏览器(Chrome/Firefox/Safari)的插件
- Firefox将不再开发Windows平台的64位版本浏览器
- userAgent,JS用户代理检测——判断浏览器内核、浏览器、浏览器平台、windows操作系统版本、移动设备、游戏系统
- 基于.NET平台的Windows编程实战(六)—— 题目管理功能的实现
- MongoDB在windows平台分片集群部署
- 转载.USBlyzer是一款Windows平台的USB协议分析工具,可以监视和分析USB控制器、USB Hub和USB设备的活动
- Apache Nutch源码工程在Linux和Windows平台换行符差异问题处理
- 企业级彩信开发平台服务器,跨越windows和Unix平台-深圳汉邦科技
- 高通6055平台FM音频问题解决
- Windows平台下开发QT程序
- 基于.NET平台的Windows编程实战(八)— 数据库管理及其他辅助功能的实现