`
linyu19872008
  • 浏览: 282445 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

OPENFIRE支持EMOJI(OPENFIRE 3.8.1版本)

 
阅读更多

 

用openfire搭建XMPP服务器时,客户端一发送emoji表情文字就会掉线,错误日志片段如下

 

2013.05.21 12:57:44 org.jivesoftware.openfire.nio.ConnectionHandler – Closing connection due to error while 

 

processing message: <message type=”chat” to=”18@chat.aiba.com” dateline=”1369112264.017495″><body>这里是

 

emoji表情</body></message> java.lang.NumberFormatException: For input string: “?” at 

 

java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) at java.lang.Integer.parseInt

 

(Integer.java:481) at org.jivesoftware.openfire.net.MXParser.more(MXParser.java:384) at 

 

org.jivesoftware.openfire.net.MXParser.nextImpl(MXParser.java:85) at org.xmlpull.mxp1.MXParser.nextToken

 

(MXParser.java:1100) at org.dom4j.io.XMPPPacketReader.parseDocument(XMPPPacketReader.java:317) at 

 

org.dom4j.io.XMPPPacketReader.read(XMPPPacketReader.java:154) at 

 

org.jivesoftware.openfire.net.StanzaHandler.process(StanzaHandler.java:159)

 

可以看到,在MXParser.java的第384行,出了问题,这里是XML的合法性验证代码,因为emoji表情文字的编码不在合法的XML字符范围内,所以只要将这里改掉,就可以正常收发emoji了   将MXParser.java中的more函数改为如下:

 

@Override
	protected char more() throws IOException, XmlPullParserException {
		final char codePoint = super.more(); // note – this does NOT return a
												// codepoint now, but simply a
												// (single byte) character!
		if ((codePoint == 0x0)
				|| // 0×0 is not allowed, but flash clients insist on sending
					// this as the very first character of a stream. We should
					// stop allowing this codepoint after the first byte has
					// been parsed.
				(codePoint == 0x9) || (codePoint == 0xA) || (codePoint == 0xD)
				|| ((codePoint >= 0x20) && (codePoint <= 0xFFFD))
				|| ((codePoint >= 0xE000) && (codePoint <= 0xFFFD))
				|| ((codePoint >= 0x10000) && (codePoint <= 0x10FFFF))) {
			return codePoint;
		}
		throw new XmlPullParserException("Illegal XML character: "
				+ Integer.parseInt(codePoint + "", 16));
	}

 

 

 

重新编译得到openfire.jar,替换服务器上的openfire.jar,再重启openfire服务,就OK了

分享到:
评论

相关推荐

    openfire3.8.1API

    4. **插件开发**:Openfire支持插件扩展,允许开发者通过编写插件增加服务器的功能。API文档中可能包含插件开发指南,包括如何创建、部署和调用插件API,以及如何处理事件和集成其他服务。 5. **安全性**:Openfire...

    openfire老版本,3.8rpm版本

    openfire老版本,3.8rpm版本,可以直接下载来用openfire老版本,3.8rpm版本,可以直接下载来用

    Openfire即时消息传输平台 v4.8.0 源码包.zip

    2. **安全性**:Openfire支持SSL/TLS加密,保证了通信过程中的数据安全,防止信息被窃听或篡改。同时,服务器端还支持用户认证和访问控制,确保只有授权的用户可以接入系统。 3. **可扩展性**:Openfire的插件架构...

    Openfire 4.2.3+Smack 4.3.0最新安装包

    Openfire 4.2.3是其最新的稳定版本,该版本可能包括性能优化、安全更新以及对新特性的支持。在安装Openfire 4.2.3 x64时,需要注意操作系统是否为64位,因为该版本是针对64位系统的。安装过程中,你需要配置数据库...

    openfire_4_0_1

    - **安全性**:Openfire支持SSL/TLS加密,确保通信数据的安全。 - **可扩展性**:通过插件机制,Openfire可以轻松添加新的功能,如视频会议、监控、审计等。 - **管理界面**:提供直观的Web管理界面,便于管理员...

    openfire_src_3_8_2.zip

    2. **XEP(XMPP Extension Protocols)**:Openfire支持众多XEP,如XEP-0045(多用户聊天)、XEP-0199(XMPP Ping)等,增强了服务器的功能。 3. **认证与授权**:Openfire使用标准的XMPP认证机制,同时提供了用户...

    openfire mac版本

    3. **数据库设置**:Openfire支持多种数据库,如内置的HSQLDB、MySQL、PostgreSQL等。根据你的需求选择合适的数据库类型,并提供相应的连接参数。 4. **端口配置**:确保Openfire使用的端口(如5222、5269、7070等)...

    Openfire 3.4.3

    3. **安全通信**:Openfire支持SSL/TLS加密,确保了用户数据传输的安全性,防止信息在传输过程中被窃取或篡改。 4. **多语言支持**:Openfire可以提供多种语言的界面,方便不同地区用户使用。 5. **插件扩展**:该...

    openfire4.1.6_linux版

    1. **实时通讯协议支持**:Openfire支持XMPP(Extensible Messaging and Presence Protocol),这是一种开放标准,使得用户可以通过聊天、视频通话、文件传输等方式进行沟通。 2. **多平台兼容**:由于Openfire基于...

    linux下openfire安装配置

    你可以访问Openfire官网获取最新版本的安装包,或者通过wget命令下载: ```bash wget https://www.igniterealtime.org/downloads/openfire/latest/openfire_latest.tgz tar -zxvf openfire_latest.tgz ``` 将解压...

    openfire3.9.3 WINDOWS安装包

    4. **XMPP 协议**:Openfire支持XMPP,这是一种基于XML的开放标准,用于即时消息传递和在线状态服务。XMPP使得Openfire可以与其他兼容的客户端(如Pidgin、Spark等)无缝集成,实现跨平台的通信。 5. **安全性**:...

    即时通信openfire功能代码

    1. 用户管理:Openfire支持创建和管理用户账户,可以对用户进行分组和权限设置,方便组织架构的构建和管理。 2. 聊天室:Openfire提供多用户聊天室功能,用户可以创建公共或私有的聊天室进行群体讨论。 3. 实时...

    openfire 3.9.3第二次开发集成所需要的包

    - 注意版本兼容性,确保`bouncycastle.jar`版本与Openfire 3.9.3及其他依赖库兼容,避免潜在的运行时冲突。 - 在进行代码修改时,遵循Openfire的开发规范和最佳实践,确保代码的质量和可维护性。 - 测试是关键,确保...

    openfire_3_9_3.tar.zip

    5. **客户端接入**:Openfire支持多种客户端,包括Spark、Pidgin、Adium等。用户只需在客户端上配置Openfire服务器的信息,即可开始即时通讯。 6. **安全与优化**:为确保系统安全,记得定期更新Openfire到最新版本...

    openfire 分布式 集群

    openfire + zookeeper实现服务器分布式 集群功能

    openfire语音聊天

    4. **添加插件**:Openfire支持插件扩展,为了实现语音聊天,我们需要找到并安装相关的语音插件,如Jitsi或MUC(多用户聊天室)。 **Web端实现** 1. **HTML/CSS**:构建聊天界面,包括输入框、发送按钮、联系人列表...

    openfire_4_1_4.tar.gz

    8. **数据库兼容性**:Openfire支持多种数据库系统,如MySQL、PostgreSQL和Oracle,用户可以根据自己的需求选择合适的数据库。 9. **监控与日志**:系统提供了详细的日志记录和监控工具,帮助管理员追踪系统状态,...

    openfire深入浅出

    OpenFire是一款基于Java开发的XMPP服务器,支持多用户聊天、群聊、文件传输等功能,广泛应用于企业内部沟通、在线客服以及游戏社交等领域。 首先,书中会介绍OpenFire的基本概念和架构。XMPP(Extensible Messaging...

    openfire的相关资源

    Openfire是一款基于Java的开源即时通讯(IM)服务器,它提供了强大的实时通信功能,支持XMPP协议,可以用于构建企业级的聊天、协作系统。在本文中,我们将深入探讨Openfire的相关资源,包括如何搭建、源码配置、编译...

Global site tag (gtag.js) - Google Analytics