关键词不能为空

当前您在: 主页 > 英语 >

openMeetings二次开发高手的七篇文章

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-02-11 00:05
tags:

-

2021年2月11日发(作者:程度英文)


第一章


PhMeetings


——




OpenMeetings

的实验性商业版本



OpenMeetings


2010-09-29 16:42:53


阅读


279


评论


0



字号:大中小



订阅




作者:老猫



PhMeetings


是基于开源


WEB

< br>视频会议系统


OpenMeetings


开发的一个实验 性商业版本,


原始蓝本来自。


老猫花了好几个月的时间,费了九 牛二虎之力至今天终于完成了一个目前还算过得去的版本,沾沾自喜


< br>……



由于资料的缺乏以及对


O penLaszlo


编程的陌生,其中艰辛不足为外人道。


今日 发一声感慨:


如果你想


折磨一个程序员,那就让他去干开源软件 的二次开发!




好了,言归正传, 先推销一下


PhMeetings


的演示地址:







参考国内流行的一些


C/S


架构下的网络视频会议系统,老猫的


PhMeetings

< p>


OpenMeetings


基础上增

< p>
加了一些适合独立进行商业运营的概念和功能,同时也删减了一些不符合国内网络环境或者形同鸡肋 的功


能。




删除的功能有:




SIP


接入网关(


IP phone


在国内基本用不上)




预约会议功能(这个在商业运营商很难掌控)




屏幕共享功能(除非部署在局域网环境,否则会把人急死)




取消了其它类型房间的录制功能,只保留< /p>


interview


类型房间内的录制功能




新增的概念或功能:




房间目录树概念:用于对房间采用树状目录管理




新增用户类型:房主。使得房间的租用概念得以商业化推广。




房间计费管理及租用到期提醒功能




新增房间管理后台功能:房主可以管理房间超级主持人、


LOG O


、背景、黑名单、白名单、链接


及广告等。

< br>



房间收藏和房间搜索功能:方便在 众多的房间中找到你想要去的。




房间锁功能:可对房间设置进入密码。




踢出房间功能:超级管理员或者房主有权在 房间里将捣乱的用户踢出系统。




黑名单功能:将用户


ID


或者

< br>IP


加入房间黑名单,该用户将被该房间拒之门外。




白名单功能:列入房间白名单的用户在房间 设置密码锁时可以不必输入密码验证。



< /p>


游客直接通过链接进入房间功能:房间租用者可以对游客开展产品推介或其它客服服务。< /p>




房间内显示背景、


LOGO


、广告及链接功能




房间欢迎语滚动显示




增加了全屏显示功能(可惜全屏时聊天的输入无法使用)




增加了视频配置里的视频帧数调节




改进的部分有:




对界面进行美化和改进




修正了移植数据库到


ORACLE


时的 一些


BUG




改进了房间的整体布局




对中文化不彻底的地方进行了完善




改进了视频的显示和布局方式




改进了摄像头采集区域的一些



优化了音频和视频参数配置




增加用户默认头像的性别区分




将用户信息从


BUG



firstname



lastname


等西方习惯改为昵称




欢迎有兴趣的朋友注册


PhMeetings


参与体验。或者以 游客身份直接进入


OpenMeetings


技术群专属房



参与讨论。





第二章


OpenMeetings< /p>


二次开发实例(一)


游客直接进入房间



OpenMeetings


2010-09-29 10:42:15


阅读


474


评论


1



字号:大中小



订阅




作者:老猫



决定写点东西,技术细节 上的东西在二次开发过程中可以慢慢摸索和体会,如果要把这些改造过程中


的细节都记录 下来,对我这个懒人来说比较困难。作为


IT


行业的一个老兵, 现在的兴趣已无法集中具体的


代码上了,吸引我的更多的是如何设计一个系统,使它的性 能和功能能符合某个领域的需求。





研究


OpenMeetings


已经几个月了,当初对这个项目感兴趣是因为这个项目是一个基于


W EB


的应用。


而目前绝大部分投入实用阶段的视频会议系统都是 基于


C/S


架构的,从


CISCO


的基于硬件的专业化视频会


议系统,


到新浪


UC



9158


等开放的视频聊天或


KTV


系统,


都 必须安装客户端甚至专用硬件。



OpenMeetings< /p>


的特点是它把前台构筑在


Flash


的基 础上(客户端被编译成了一个


swf


文件),如此,只要客户的 机器的浏


览器安装了


Flash Player


插件,就可以毫无障碍地运行起来。碍于


Flash


对 于


webcam


的视频和音频的实时


采 样压缩和传输的能力,目前在性能上,


OpenMeetings


还无法与


C/S


架构的视频会议系统相比。但


OpenMeetings


的先天优势在于它的完全


B /S


架构,使得它可以无缝地与网站相衔接。




我们设想一些网络应用,比如企业的产品推广或者网上店铺 的商品展示,它们的目标对象大部分不是


固定的,而是随机的游客。采用传统的视频会议 系统,需要下载安装客户端并且注册登录等一堆操作,对


于只是路过的游客来说,


99%


是不可能做这些的。



假如我们只需要一个链接填写一个昵称就能进入到一个视频会议房间,该房间里有值班的客服,随时


可以为你通过视频、白板等推介商品,那么至少有一半以上的游客是乐意这么做的。





我们设想的这个商业应用,很关键的一个环节是不需要注册和登录等等环节,也不需要用户熟悉这个


系统或者去搜索某个房间的入口,而是通过网站上的某个链接地址点击直接进入指定的房间。比如某个 网


购门户,


每个商家都在


OpenMe etings


拥有一个产品推介房间,


那么它的店铺内就显示一 个直通该房间的链


接,游客点击该链接,系统要求用户输入一个昵称后就直接将用户重定 向到该房间内由房间值班员和用户


进行视频互动。




OK


,我们就把这个应用当作一个 方向来改进和设计


OpenMeetings


。那么今天的这篇 文章,就来讲述


一下如何在


OpenMeetings


上实现一个游客直通房间的功能。





首先,我们设计一个类,这个类用户实现游客的 登录名的自动生成。系统接受游客时需要自动为游客


生成一个登录名(

< br>login name



,


我们 可以把它涉及成


guestXXXXXX


的形式,


XXXXXX


的号码是从


0~999999


之间顺序生成的。




public



class


GuestNumManagement {






private



static


GuestNumManagement


instance


=


null


;




private



long



currentNum


=0;






private


GuestNumManagement() {




}






public



static



synchronized


GuestNumManagement getInstance() {




if


(


instance


==


null


) {




instance


=


new


GuestNumManagement();




}




return



instance


;




}






public



long


nextNum(){




if


(


currentNum


>999999){




resetNum();




}




long


n=


currentNum


++;




return


n;




}






public



void


resetNum(){




currentNum


=0;




}



}





接下来,


我们仿照


OpenMeeting s



SOAP


接口来实现一个


servlet



这个


servlet


接收房间号、


游客的昵称和性别,然后调用


SOAP


接口组装成一个直接进入房间的


u rl


,并且将用户浏览器重


定向到这个


url






public



class


DirectGateway


extends


HttpServlet {




private



static



final


Logger


log


= ,



);






protected



void


service(HttpServletRequest httpServletRequest,




HttpServletResponse httpServletResponse)


throws


ServletException,




IOException {






(



);




(



);




(



);




try


{




etRoomById(room_id);




if


(roo m==


null


){




PrintWriter out = ();




(



指定的房间不存在或已被删除!



);




();




();




return


;




}






.




}






extNum();




username=



+(num)+< /p>



;


etsessiondata();




String sessionId=();






oginUserEx(sessionId,(),


nul l


,


false


,

null


);




Long returnVal=


new


Long(-1);




if


(obj==


null


){




returnVal =


new


Long(-1);




}




String objName = ().getName();






if


(



)){




returnVal = (Long) obj;




}


else


{




returnVal =


new


Long(1);




}




if


(returnVal!=1){





PrintWriter out = ();




(



房主授权验证失败


!


);




();




();




return


;




}






heckSession(sessionId);




Long user_level = ().getUserLevelByID(users_id);




returnVal =


new


Long(0);




ize()>=()){




.






if


(returnVal==0){




pdateUserRemoteSession(sessionId, xmlString);






String hash = ().addSOAPLogin(sessionId, room_id,




false


,


false


,


false


,


null


);





if


(hash !=


null


) {






pageEncoding


=



%>



<%



String roomid=(



);



if


(roomid==


null

< br>){




< /p>


调试(


Debugging


< p>



附带一个嵌入式的命令行调试器 ,可以在运行时显示警告和日志信息,并且可判读应用程序中


ECMAScript


脚本的上下文表达式。





部署模式




Proxied


代理方式



SOLO


模式做不到的更多的事情,


但是部署起 来更加麻



代理模式部署应用程序可以做到< /p>


烦,很多时候执行起来比较慢。




SOLO


方式




SOLO


更易于部 署,执行效率也更高。








工作 流



天气预报典型应用








不足




没有一个很好的集成开发环境(


IDE



。目前在



Laszlo IDE


Spket


Eclipse


下开发


Laszlo


应用有两种选择:



插件



插件。



Laszlo


的支持与


Flash B uilder


相比较的话,


仍然任重道



前者已经停止了维护,


而后者对


远。< /p>




无法在

< br>IDE


环境下做到


UI


的所见即 所得,或者在


IDE


环境下直接获得编译错误;




缺乏断点调试等方便的调试手段;




与商业软件


Flex


相比,参考资料和 书籍缺乏。



OpenMeetings


二次开发


(



)RED5

< p>
简介



OpenMeetings


2010-09-28 17:11:17


阅读


161


评论


0



字号:大中小



订阅




作者:老猫




前文介绍过,


OpenMeetings


的后台是在< /p>


RED5


的基础上开发的。因此


Open Meetings


的框架



RED5< /p>


一脉相承,


不可分割。


OpenMeet ings


的二次开发中,


负责编写后台的工程师必须对


RED5


有所了解,并且理解其基本概念及其框架。



在此,


整理了一些相关


RED5


的基础介绍以及开发


RED5


应用时必然会涉及的一些基本概念,


希望对朋友


们们有所帮助。




挑战


FMS




在介绍


RED5


之前,有必要先介绍一 下


Flash Media Server






Flash


Media


Server


,简称


FMS

,是


Flash


大家庭里的一员,被称为是目前开发


Web


音视频应用程序(比如,视频聊天室、视频会议系统、播客系统 、音视频留言等等)的


最方便最快捷的解决方案。也在


web< /p>


应用程序开发上有着越来越广泛的应用。




典型应用:


You Tube


、土豆网






FMS


如此的优良功能当然并不是免费提供给广大用户的,几千美金每个点的价格让很


多开发人员望而却步。于是,开源的


Red5


成为人们的新宠。






RED5-


穷人的流媒体服务器




Red5


是一个采用


Java


开发的开源的


Flash


流媒体服务器,功能上与


FMS


类似。它支持:




把音频(


MP3


)和视频(


FLV


) 转换成播放流;




录制客户端播放流(只支持



共享对象;




现场直播流发布;




远程调用。




FLV







Red5


使用


RSTP


作为流媒体传输协议,在其自带的一些 示例中实现了




在线录制




flash


流媒体播放




在线聊天




视频会议






RED5


中的几个个重要概念和模型




scope



Red5


中,所有资源形成一颗树,每一个节点被称为


sco pe


,如果该节点是个叶子节点,那它被称为


BasicSco pe


,如果该节点还有子节点,那它被



称为


Scope




Red5


里有两种预先定义好的


BasicScope



SharedObject Scope



BroadcastStream Scope




< br>每一个应用都有自己的


Scope


等级体系,根就是


WebScope


(即此应用的实例)


。< /p>


Red5


定义了一个全局


scope


意在提供一个通用的资源供各个应



用共享 ,称之为


GlobalScope



G lobalScope


是所有的


WebScope


的父节点,


其余的中间


scopes


都是


Scope


的实例。


每一 个



scope


有一个名称。


GlobalScope


的名称是:


defau lt



每一个


WebScope


的名字就是该应用上下文的名称。中间的


Scope

< br>的名字



就是它所在路径的名称。


SharedObject Scop e


的名字就是


SharedOjbect


的名字,


BroadcastStream Scope


的名 字就是


Stream


的名字。





除了

GlobalScope



BasicScopes


外,其余


scope


都可以被一个

< p>
client


连接。一个客户端请求连接的结果


会 被用来创建一个



Scop


对象


.


例如:


一个客户端请求一个连接来连


oflaDemo/room0



而此时


room0



scope

< br>并未存在,当创建了这个连接后,


room0



scope


被创建了,如果请求的


url


里包含了中间多个


scope


,所


有的


scope


都会相应地被创建。比如:


url


为:


oflaDemo/lobby 0/room0


,此时


room0


和< /p>


lobby0


都不存在,


那他们都会被相 应的创建,然后,连接指向了


room0


这个

< br>scope





context



< p>
一个


Context


是和一个

Scope


对象绑定在一起的


,


它 用来给


scope object


提供额外的功能


.Context


对象可以


通过

()


来获得


.Context


包装 了


spring




application context,


因此


,spring


里声明的各种


bean


在此都可以使用


.



Context


可以被继承


.


这就是说 一个


Scope


可以继承它的父节点的


Context


而无需自己在定义一个


context,


只有


GlobalScope



WebScope


必须使用它们自己的


Contex t


对象


.



“Scopes ”



“Contex ts”


是开发


red5


重要概念。




每个


application



Red5




仅仅只有一个



Context




Context


类实现了接口



IContext




context


实例对


象由


Java Spring framework


初始化,


它提供作用路径映射和不同服务 接口。


每个


application


只 有一个


context


和一个


Web Scope



WebScope


的名称和



context


的路径配置相关,它们名称虽相同但意义不同。




application


-


-


-


-


-


-


-


-



本文更新与2021-02-11 00:05,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/632699.html

openMeetings二次开发高手的七篇文章的相关文章