- 浏览: 1467104 次
- 性别:
- 来自: 青岛人在北京
文章分类
最新评论
-
yhxf_ie:
azheng270 写道 永远是0知道答案了, inser ...
使用MySQL的LAST_INSERT_ID -
yhxf_ie:
insert了还是0... 可能还要设置些什么?
使用MySQL的LAST_INSERT_ID -
一如年少:
123123
Flex使用ribbit.com的服务给手机发送短信SMS -
pointdew:
poincare 写道您好,请教一个问题,如果我的 swf 文 ...
Flex:使用FlexPaper显示PDF文档 -
pointdew:
swf远程加载问题 : flexpaper无法加载http方式 ...
Flex:使用FlexPaper显示PDF文档
先解释几个名词
XMPP: (eXtensible Messaging and Presence Protocol) XMPP的前身是Jabber,一个开源形式组织产生的网络即时通信协议。XMPP目前被IETF国际标准组织完成了标准化工作。是目前主流的四种IM(IM:instant messaging,即时消息)协议之一,其他三种分别为:IMPP、PRIM、SIP(SIMPLE)。
XIFF: XMPP Implementation For Flash. (一个ActionScript的XMPP类库)
Openfire: (原名Wildfire) 基于Java的开源实时协作(RTC)服务器,使用XMPP(Jabber)协议。
Google推出的Google Talk就是基于XMPP的IM软件。所以我想使用Flex也开发一个基于XMPP的聊天程序。现在已经有了很好的开源服务器Openfire http://www.igniterealtime.org/projects/openfire/index.jsp 支持中文哦。
另外还有一套XIFF API,专为flash开发XMPP应用,但现在XIFF2.0是用AS2写的,而Flex2是基于AS3的,幸运的是有人已经写了一个基于AS3的实现。http://svn.igniterealtime.org/svn/repos/xiff/branches/xiff_as3_flexlib_beta1/
要开发Flex + Openfire的系统,首先要安装Openfire服务器,安装很简单,具体看安装手册http://www.igniterealtime.org/builds/openfire/docs/latest/documentation/install-guide.html
安装在本机的Openfire启动后,可以通过http://localhost:9090 管理
好,现在开始开发Flex客户端。因为现在XIFF_AS3的文档几乎没有,所以只能通过XIFF2的例子,和Smack API(for java的)来学习。XIFF的核心是XMPPConnection,它基本是围绕flash.net.XMLSocket写的。首先创建一个Flex项目并引入 XIFF.swc
登录服务器比较简单
var connection : XMPPConnection = new XMPPConnection();
connection.server = 服务器名
connection.port = 服务器端口号
connection.username = 用户名
connection.password = 密码
connection.connect("flash");
下面是一个简单的小例子
- <?xml version="1.0" encoding="utf-8"?>
- <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
- creationComplete="initApp()">
- <mx:Script>
- [CDATA[
- import org.igniterealtime.xiff.events.RoomEvent;
- import mx.controls.Alert;
- import org.igniterealtime.xiff.events.MessageEvent;
- import org.igniterealtime.xiff.core.XMPPConnection;
- import org.igniterealtime.xiff.conference.Room;
- import org.igniterealtime.xiff.events.LoginEvent;
- import org.igniterealtime.xiff.data.*;
- public const SERVER_NAME : String = "wangcheng";
- public const CHATROOM : String = "chatRoom1";
- private var chatRoom : Room;
- private var connection : XMPPConnection;
- private function initApp():void {
- connection = new XMPPConnection();
- connection.addEventListener(LoginEvent.LOGIN, onLogin);
- }
- private function doLogin():void {
- if (!connection.isLoggedIn()) {
- connection.username = username.text;
- connection.password = password.text;
- connection.server = SERVER_NAME;
- connection.port = 5222;
- connection.connect("flash");
- if(connection.isLoggedIn()){
- chatContent.htmlText += "Welcome " + username.text + "<br/>";
- }
- } else {
- connection.disconnect();
- }
- }
- private function onLogin(event):void {
- inputMsg.enabled = true;
- sendBtn.enabled = true;
- chatRoom = new Room( connection );
- chatRoom.setRoomJID(connection.getJID());
- chatRoom.roomName = CHATROOM;
- chatRoom.nickname = connection.username;
- chatRoom.conferenceServer = "conference." + SERVER_NAME;
- chatRoom.join();
- chatRoom.addEventListener(RoomEvent.GROUP_MESSAGE, groupMessage);
- }
- private function groupMessage(event):void {
- displayUserMessage(getNickName(event.data.from) , event.data.body );
- }
- private function getNickName(jid : String) : String {
- var name = jid.split("/")[1];
- if (name == null) {
- name = "Message";
- }
- return name;
- }
- private function displayUserMessage(user:String, message:String) : void {
- var fontColor : String = "#002bd2";
- if (user == chatRoom.nickname) {
- fontColor = "#8e2800";
- }
- chatContent.htmlText += "<font color='" + fontColor + "'><b>" + user + ":</b> " + message + "</font><br />";
- }
- private function sendMsg():void {
- if (inputMsg.text != "") {
- chatRoom.sendMessage(inputMsg.text);
- inputMsg.text="";
- }
- }
- ]]
- </mx:Script>
- <mx:Label x="10" y="10" text="UserName"/>
- <mx:TextInput id="username" x="80" y="8" width="92"/>
- <mx:Label x="180" y="10" text="Password"/>
- <mx:TextInput id="password" x="244" y="8" width="99" displayAsPassword="true"/>
- <mx:Button x="351" y="8" label="Login" click="doLogin()"/>
- <mx:TextArea id="chatContent" x="10" y="36" width="397" height="171"/>
- <mx:TextInput id="inputMsg" enabled="false" x="12" y="215" width="333" enter="sendMsg()" />
- <mx:Button id="sendBtn" enabled="false" x="353" y="215" label="Send" click="sendMsg()" />
- </mx:Application>
参考
http://www.dgrigg.com/post.cfm/09/05/2006/XIFF-Actionscript-3-for-Flex-2
评论
请楼主指教
http://wangcheng.iteye.com/blog/153548
如今用JAVA连OPENFIRE也可以,但用XIFF3就不可以了。
你的OPENFIRE的型号是多少?是不是3.4.1?
var connection:XMPPConnection;
connection=new XMPPConnection();
connection.server="kenshinhu";
connection.port=5222;
connection.username="abcd";
connection.password="1234";
trace(connection.connect("flash"));
if(connection.isLoggedIn()){
trace("is login");
}else{
trace("isn't login");
}
我是用上面的代码来连接的。
SERVER_NAME是对应OPENFIRE服务上的服务器设置里的服务器名称对吗?我在OPENFIRE上也建了相应的用户了。。
但最后trace出来的值是isn't login咯。。。请求是不是还有别的要设置?
我试过CONNECTION去OPENFIRE,在和OPENFIRE下设的用户和密码一样下,也连不上,请问是怎样一回事?
像我这种脾气,心里的事得憋三天那是多么痛苦啊!呵呵
"新会员不能留言和评论" - 同感。三天后才能留言,使我见过的最恶心的限制。
可以到这里看看
http://www.igniterealtime.org/community/community/developers/xiff?start=0&view=discussions
里面有些例子。
我按着你的方法做了,又花了一些的时间研究了openfire和关于xiff,很遗憾没有正式为as3的版本.
我花了一个下午来实验你的方法,代码里有一些警告和错误,已经修改,可以正常运行,从服务器端可以看到用户已经登陆,可是对话的结果却总是显示不出来.在velloff的代码里面debug,发现你的程序的流程有一些问题,可惜velloff的那个as3的xiff没有说明文档和例子,未果~~~
带着多样的心情,给你留言,希望能有更好的机会一起探讨~~
期待你的下一篇文章.
我的hotmail和email是:maple_zl@hotmail.com
发表评论
-
Flex4中文视频教程 - RIAMeeting
2010-04-23 10:48 6866RIAMeeting翻译的Flex4中文视频教程, 地址 ht ... -
Flash Flex 开源游戏引擎
2010-03-28 21:18 7240今天去了 9RIA.com 的北京天地会活动, 会上介绍了一些 ... -
几十个 ActionScript 3.0 APIs for Flex, Flash, AIR
2009-12-22 11:54 4203开发过程中使用API可以节省时间,这里有几十个API,它们可以 ... -
Flex:使用FlexPaper显示PDF文档
2009-12-15 17:03 35491FlexPaper是一个开源的轻量级文档显示组件,被设计用来与 ... -
Flex白板画图例子
2009-06-21 18:56 8155这个程序是从公司2007年做的一个项目中抽取出来的部分代码完成 ... -
Flex使用ribbit.com的服务给手机发送短信SMS
2009-06-13 15:10 3132http://www.ribbit.com/ 可以将语音通 ... -
Flex鼠标移到Label上显示手型useHandCursor
2009-05-08 11:28 5679要想鼠标在Label上显示为手型,需要设置3个属性 & ... -
Flex3与EJB3的WebService通讯
2009-04-18 14:20 3756项目中使用了Flex3 + EJB3 + WebService ... -
CodeBehind and DI 分离MXML中的ActionScript
2009-04-09 20:27 2750你是否开始厌倦在 mxml 中写 <mx:Script& ... -
De MonsterDebugger开源的Flex运行时调试器
2009-04-09 15:53 4093De MonsterDebugger http://www. ... -
Flex组件中PopUpManager在全局坐标中心弹出窗口
2009-04-02 19:52 5057在Flex的某个组件中使用 var somePopupWi ... -
在JBoss4.2中放置crossdomain.xml解决flex3跨域访问WebService问题
2009-03-31 20:54 5770Flex访问部署在JBoss4.2上的WebService时报 ... -
使用Flex3的Import Web Service功能
2009-03-28 21:36 2532在FlexBuilder的菜单上选 Data -> I ... -
使用KitchenSync和CASALib延迟(delay)执行Flex的function
2009-02-25 18:26 3432要延迟(delay)执行Flex的function,或按顺序同 ... -
Flex中解决Error #2044 securityError
2009-02-25 16:54 6667在FlexBuilder中运行app没有问题,复制项目的 bi ... -
Flex中加载Flash CS3制作的swf文件
2009-02-14 20:37 6330Flex加载Flash CS3制作的swf文件, 看Demo ... -
Flex视频教学 (RIAMeeting翻译Flex in a Week)
2008-12-01 00:03 4364此系列Flex视频教学是基于Adobe官方的Flex in a ... -
Flex中文API (Adobe官方)
2008-08-19 10:03 21541Adobe推出的中文API http://livedocs ... -
RIAMeeting - Flash Media Server 3
2008-07-26 22:08 3275这次是RIAMeeting的第七次 ... -
Mate Flex Framework
2008-07-22 11:29 3173Mate 是一个基于标签(tag-based)的事件驱动(ev ...
相关推荐
swf文件 博文链接:https://wangcheng.iteye.com/blog/153548
Flex是一种基于Adobe Flash Player或Adobe AIR的开源框架,用于创建富互联网应用程序(RIA)。它提供了丰富的用户界面组件和强大的数据连接能力,适用于构建跨平台的桌面和移动应用。在这个特定的场景中,"Flex实现...
在Android平台上构建XMPP聊天应用程序是一项常见的任务,XMPP(Extensible Messaging and Presence Protocol)是一种基于XML的实时通信协议,广泛用于即时通讯应用。本文将深入探讨如何利用Android技术和XMPP协议来...
本项目“基于XMPP的即时通信程序”着重于使用XMPP(Extensible Messaging and Presence Protocol)协议来构建这样一个系统。XMPP是一种开放标准的协议,最初由Jabber项目开发,现已被IETF标准化,广泛应用于多种实时...
在这个“基于xmpp的安卓客户端高仿QQ”项目中,开发者利用XMPP技术来创建一个类似于QQ的移动应用程序,让用户体验到类似的功能。 首先,让我们深入了解一下XMPP的核心概念。XMPP基于XML流,通过TCP连接提供稳定的...
【基于XMPP协议的Qt聊天程序】是一种使用XMPP(Extensible Messaging and Presence Protocol)标准进行即时通讯的应用,它的设计和实现充分利用了Qt库的强大功能。XMPP是一种开放且基于XML的通信协议,广泛用于即时...
【基于XMPP的聊天项目】是一个使用Android平台开发的聊天应用程序。XMPP(Extensible Messaging and Presence Protocol)是一种开放标准的即时通讯协议,它基于XML流传输,常用于实现聊天、在线状态管理等功能。这个...
基于XMPP协议的WEBIM 简单实现,如有开发openfire+spark/jwchat的可以参考
XMPP是一种开放标准,主要用于即时消息传递和在线状态跟踪,它基于XML流,使得数据传输更为灵活且易于解析。 标题“基于XMPP实现android客户端与服务器的交互”指出了我们的重点:使用XMPP协议在Android应用中实现...
XMPP协议是一种基于XML的开放标准协议,用于实时通信和在线状态管理。它最初被称为Jabber协议,后来更名为XMPP。该协议的主要目标是实现不同即时通信服务之间的互操作性和可扩展性。 ##### 2、Xmpp协议内容 XMPP...
【基于XMPP协议的Gloox底层库开发的即时通讯Qtalk源码】是一个使用C++编写的项目,它利用了Gloox库来构建一个即时通讯应用。Gloox库是一个开源的实现,完全遵从XMPP(Extensible Messaging and Presence Protocol)...
本文将深入探讨基于XMPP(Extensible Messaging and Presence Protocol)协议的IM系统,以及如何在iOS平台上实现一个类似QQ的即时通信功能。 XMPP是一种基于XML的开放标准,最初设计用于即时通讯,但后来扩展到更...
总之,这套基于XMPP协议的Socket通信程序不仅提供了一个学习即时通讯协议和Socket编程的好例子,还具备了在复杂网络环境下的适应性。通过深入理解和实践,开发者可以提升网络通信领域的专业技能。
XMPP(Extensible Messaging and Presence Protocol)是一种基于XML的实时通信协议,被广泛应用于即时通讯(IM)领域。本教程将介绍如何在iOS平台上利用XMPP协议开发一个简单的即时通讯应用Demo。首先,我们需要理解...
本项目就是基于XMPP来创建一个Android版本的微客服系统,旨在提供基础的聊天和用户状态服务,同时也为开发者提供了扩展和自定义的空间。 首先,让我们深入了解XMPP。XMPP的核心设计是基于XML流,它允许客户端与...
1. 什么是Openfire:Openfire是一个开源的即时消息服务器,它基于XMPP协议,支持各种即时通讯客户端。 2. 为什么使用Openfire:Openfire易于配置、安装和维护,具有较好的性能,适合用于创建服务器端的即时通讯解决...
XMPP(Extensible Messaging and Presence Protocol)是一种基于XML的实时通讯协议,常用于构建即时通讯应用,如聊天软件。在iOS平台上开发XMPP聊天程序客户端,通常需要对XMPP框架有深入理解,并熟悉iOS的网络编程...