ImageVerifierCode 换一换
格式:DOCX , 页数:9 ,大小:18.59KB ,
资源ID:6871980      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6871980.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(51CTO下载Flex+Red5语音视频聊天程序实现.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

51CTO下载Flex+Red5语音视频聊天程序实现.docx

1、51CTO下载Flex+Red5语音视频聊天程序实现Flex+Red5语音视频聊天程序实现2010-12-06 09:30:32|分类: 程序代码 |标签:red5 |字号大中小订阅 java代码部分package first;import java.util.HashMap;import java.util.Iterator;import java.util.Map;import java.util.Set;import org.red5.server.adapter.ApplicationAdapter;import org.red5.server.api.IConnection;impo

2、rt org.red5.server.api.IScope;import org.red5.server.api.Red5;import org.red5.server.api.service.IServiceCapableConnection;import org.red5.server.api.so.ISharedObject;public class Application extends ApplicationAdapter / 属性 private IScope appScope; private String userName; /共享存储在线用户private ISharedOb

3、ject listSO;private Map onlineList = new HashMap();/ 在线用户表/程序运行时志向public boolean appStart(IScope app) if (!super.appStart(app) return false; appScope = app; return true; Overridepublic boolean appConnect(IConnection arg0, Object arg1) /* * 用户首次连接server 时触发,检查用户是否重复登录,将用户添加到在线用户表中 */String userId=arg

4、0.getClient().getId();if(!super.appConnect(arg0, arg1)return false;if (arg1 != null ) userName = (String) arg10;if(onlineList.get(userName) != null)rejectClient(请不要重复登录);return false;onlineList.put(userName, arg0);listSO = getSharedObject(appScope, listSO, false);listSO.setAttribute(userId, userName

5、); System.out.println(The user:+userName+,+userName+ logined successfully);return true;/* * 通知所有人当前用户登录 * param params */public void getOnloadUser(Object params) String clientName = params0.toString();if(null = clientName | .equals(clientName) return ; /给所有客户端数据 IScope scope = Red5.getConnectionLoca

6、l().getScope(); Iterator it = scope.getConnections().iterator(); for (;it.hasNext();) Set connections = (Set)it.next(); IConnection tempConn = (IConnection)connections.iterator().next(); if (tempConn instanceof IServiceCapableConnection) IServiceCapableConnection sc = (IServiceCapableConnection) tem

7、pConn; sc.invoke(result_getOnloadUser, new ObjectclientName); /聊天 public void sayToAll(Object params) IConnection conn = Red5.getConnectionLocal(); String user_id = conn.getClient().getId(); String clientName =(String) listSO.getAttribute(user_id); System.out.println(*发言者是:+clientName); String sayTo

8、Name=params0=null?:params0.toString().trim(); String sayWhat=params1=null?:params1.toString().trim(); if(.equals(sayToName)|All.equals(sayToName)/ 发消息给聊天室的所有人. IScope scope = Red5.getConnectionLocal().getScope(); Iterator it = scope.getConnections().iterator(); for (;it.hasNext();) Set connections =

9、 (Set)it.next(); IConnection tempConn = (IConnection)connections.iterator().next(); if (tempConn instanceof IServiceCapableConnection) IServiceCapableConnection sc = (IServiceCapableConnection) tempConn; / 调用客户端showMessage方法。 sc.invoke(showMessage, new ObjectclientName+ to All:+sayWhat); else IConne

10、ction tempConn=onlineList.get(sayToName); if (tempConn instanceof IServiceCapableConnection) IServiceCapableConnection sc = (IServiceCapableConnection) tempConn; sc.invoke(showMessage, new ObjectclientName+ to +sayToName+:+sayWhat); IServiceCapableConnection sc = (IServiceCapableConnection) conn; sc

11、.invoke(showMessage, new ObjectclientName+ to +sayToName+:+sayWhat); / 用户断开连接的时候触发 public void appDisconnect(IConnection conn) String dis_user_id = conn.getClient().getId(); String user = (String) listSO.getAttribute(dis_user_id); / 根据ID删除对应在线纪录 onlineList.remove(user); / 删除用户列表共享对象的对应属性 listSO.remo

12、veAttribute(dis_user_id); IScope scope = Red5.getConnectionLocal().getScope(); Iterator it = scope.getConnections().iterator(); for (;it.hasNext();) Set connections = (Set)it.next(); IConnection tempConn = (IConnection)connections.iterator().next(); if (tempConn instanceof IServiceCapableConnection)

13、 IServiceCapableConnection sc = (IServiceCapableConnection) tempConn; / 服务器端调用客户端flash方法。 sc.invoke(disconnectMessage, new Objectuser); /视频邀请 public void videoInvite(Object params) IConnection conn = Red5.getConnectionLocal(); String user_id = conn.getClient().getId(); String clientName =(String) li

14、stSO.getAttribute(user_id); System.out.println(*视频邀请者是:+clientName); String sayToName=params0=null?:params0.toString().trim(); if(.equals(sayToName)|All.equals(sayToName)/ 发消息给聊天室的所有人. System.out.println(不可以邀请0或者多个人); else IConnection tempConn=onlineList.get(sayToName); if (tempConn instanceof IServ

15、iceCapableConnection) IServiceCapableConnection sc = (IServiceCapableConnection) tempConn; sc.invoke(showInviteMessage, new ObjectclientName+;+sayToName); /同意邀请后调用邀请方方法 public void agreeVideoInvite(Object params) IConnection conn = Red5.getConnectionLocal(); System.out.println(params length+params.l

16、ength); /邀请者 String inviteUserName=params0=null?:params0.toString().trim(); /被邀请者 String otherUserName=params1=null?:params1.toString().trim(); System.out.println(*邀请者是:+inviteUserName); System.out.println(*被邀请者是:+otherUserName); if(.equals(inviteUserName)/ 发消息给聊天室的所有人. System.out.println(出错了); else

17、 System.out.println(*调用成功); IConnection tempConn=onlineList.get(inviteUserName); if (tempConn instanceof IServiceCapableConnection) IServiceCapableConnection sc = (IServiceCapableConnection) tempConn; sc.invoke(showVideo, new ObjectotherUserName); System.out.println(*调用结束); Flex3代码部分!CDATAimport mx.

18、events.CloseEvent;import mx.collections.ArrayCollection;import mx.controls.Alert;private var listSO:SharedObject;private var userArr:Array;private var conn:NetConnection;private var localUsername:String;private var stm:NetStream; private var stm2:NetStream; /摄像头private var cam:Camera;/麦克风private var

19、 mic:Microphone; private var video_0:Video;private var video_1:Video;Bindablepublic var cards:ArrayCollection;/视频邀请集合public var videoUsers:Array;protected function login(event:MouseEvent):void/ TODO Auto-generated method stublocalUsername= txt_name.text;if(localUsername=)Alert.show(用户名不能为空);return;e

20、lseif(conn=null)conn = new NetConnection();conn.client = this;conn.addEventListener(NetStatusEvent.NET_STATUS, _statusHandler); conn.connect(rtmp:/192.168.0.10/szftest, localUsername);/状态监听 private function _statusHandler(evt:NetStatusEvent):void if (evt.info.code = NetConnection.Connect.Success) th

21、is.currentState = chat;Alert.show(连接成功); _setListSO(); /创建用户列表共享对象 this.showJoinInInfo(localUsername); if (evt.info.code = NetConnection.Connect.Failed) Alert.show(连接失败); if (evt.info.code = NetConnection.Connect.Closed) Alert.show(连接关闭); public function showJoinInInfo(message:String) : void/conn.ca

22、ll(getOnloadUser, new Responder(result_getUsers); conn.call(getOnloadUser, null,message);public function result_getOnloadUser(str:String):void txt_chatmsg.text += str + 加入聊天室 + n; /创建用户列表共享对象 private function _setListSO():void listSO = SharedObject.getRemote(listSO, conn.uri, false); listSO.connect(

23、conn); listSO.addEventListener(SyncEvent.SYNC,_listSOSyncHandler); /用户列表共享对象被更新之后事件 private function _listSOSyncHandler(evt:SyncEvent):void _showUserList(); /更新用户列表 /更新用户列表 private function _showUserList():voidcards = new ArrayCollection( label:All);userArr = new Array(); /用户数组更新 for (var tmp:String

24、 in listSO.data) userArr.push(listSO.datatmp); /添加ArrayCollection for (var i:int = 0; i userArr.length; i+ ) cards.addItem( label:userArri ); /将数组添加到列表中显示出来 userList.dataProvider = cards; users.dataProvider=cards;public function showMessage(message:String) : voidtxt_chatmsg.text += message + n; prot

25、ected function sendMessage(event:MouseEvent):void/ TODO Auto-generated method stubvar sendString:String = txt_yousay.text;/var sendTo:String=users.selectedItem.userName=null?:users.selectedItem.userId;var sendTo:String=userList.selectedItem.label;txt_yousay.text = ;conn.call(sayToAll, null,sendTo,se

26、ndString);/断线通知public function disconnectMessage(disUser:String):voidtxt_chatmsg.text += disUser + 退出聊天室n;/视频邀请protected function video_clickHandler(event:MouseEvent):void/ TODO Auto-generated method stubvar sendTo:String=userList.selectedItem.label;conn.call(videoInvite, null,sendTo);/显示自己的视频 public function _publishVideo():voidstm = new N

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1