openfire

IM群聊消息的已读回执功能该怎么实现?

懵懂的女人 提交于 2021-02-15 02:33:41
本文引用了架构师之路公众号作者沈剑的文章,内容有改动,感谢原作者。 1、前言 我们平时在使用即时通讯应用时候,每当发出一条聊天消息,都希望对方尽快看到,并尽快回复,但对方到底有没有真的看到?我却并不知道。 一个残酷的现实是,很多时候对方其实是早就已经看到了这条消息,但出出种种原因(大家都懂的),通常都是默默返回——假装没看见。 像微信这样的熟人社交工具,在产品的设计理念上,为了保持使用者的隐私性,在线状态、已读回执等涉及隐私的功能,都没有提供。但很多时候,尤其商务、办公场合下,特别需要一种强反馈的工具,这对于打造高效的团队很有帮助(虽然员工很反感,但老板都喜欢这样的功能,哈哈)。 目前市面上主流的移动端IM里,提供了已读回执的主要有阿里的钉钉、网易的易信、阿里的旺旺,如下图所示: ▲ 上图从左至右分别为:钉钉、易信、旺旺(千牛) 以阿里的钉钉为例,钉钉的产品定位是用于商务交流,其“强制已读回执”功能,让职场人无法再“假装不在线”、“假装没收到”。更有甚者,钉钉的群聊“强制已读回执”功能,甚至能够知道谁读了消息,谁没有读消息(老板的福音啊)。 那么群聊消息的收发流程、消息的送达保证、已读回执机制,到底该怎么实现呢?这就是今天要讨论的话题。 学习交流: - 即时通讯开发交流3群: 185926912 [推荐] - 移动端IM开发入门文章:《 新手入门一篇就够:从零开发移动端IM 》

Unable to connect with openfire using react-native-xmpp

怎甘沉沦 提交于 2021-01-27 04:41:09
问题 I have a react-native Chat application which I am running on my android phone using USB debugging and I am using OPENFIRE as a chat server. For connecting with Openfire I am using library ' react-native-xmpp '. Below is the code for connection with OPENFIRE using react-native-xmpp -- import XMPP from 'react-native-xmpp'; var JID = 'admin@192.168.4.246'; XMPP.on('error', (message) => console.log('ERROR:' + message)); XMPP.on('loginError', (message) => console.log('LOGIN ERROR:' + message));

openfire的入门学习

百般思念 提交于 2020-11-27 02:26:39
今年开始到5月都在学习和使用openfire进行公司新的项目开发,这里正好整理一下学习笔记。 openfire是什么? Openfire 采用Java开发,开源的实时协作(RTC)服务器基于XMPP(Jabber)协议。Openfire安装和使用都非常简单,并利用Web进行管理。单台服务器可支持上万并发用户。 安装openfire,这个网络上面教程很多,安装也很方便,只要有jre环境就ok,就不多做说明了。 openfire采用xmpp协议,底层怎么交互可以不用研究,反正就是按xml的协议进行消息的交互。xml的好处就是扩展性强,缺点应该就是冗余 公司用的java开发,这里就涉及到openfire提供的api包,在java是smack,这是一个封装了很多消息,事件的包,使开发openfire变的相当快速。 再讲解一些openfire中的一些基本概念: jid: node@domain/resource,这就相当于唯一标示 (1) 名(domain identifier);openfire服务器的名称 (2) 点(node identifier);用户的名称 (3) 源(resource identifier).资源,可以理解为可以通过多种软件连接openfire,那个软件的标示 3个基础包 Presence:出席包,用来告知服务器是上线还是下线等状态信息 用枚举类型Presence

openfire插件开发入门——过滤脏话

↘锁芯ラ 提交于 2020-11-27 01:45:10
插件开发入门——过滤脏话 一、 简述 openfire为了扩展其他功能,适用于不同的需求,提供了插件的机制。 提前准备:把openfire源码导入到eclipse 或者 IDEA中。 二、说明 编写openfire插件,必须实现一个插件接口 Plugin ,只要实现了这个接口,就会被openfire认为是插件。 public interface Plugin { /** * Initializes the plugin. * * @param manager the plugin manager. * @param pluginDirectory the directory where the plugin is located. */ void initializePlugin( PluginManager manager, File pluginDirectory ); /** * Destroys the plugin.<p> * * Implementations of this method must release all resources held * by the plugin such as file handles, database or network connections, * and references to core Openfire

openfire配置中常见错误

独自空忆成欢 提交于 2020-05-06 06:50:38
openfire配置中常见错误 1.异常:配置文件报错:不允许有匹配 "[xX][mM][lL]" 的处理指令目标 解决方法: 规范的XML格式: <?xml version="1.0" encoding="UTF-8"?> 必须是XML文件的第一个元素且前面不能空格。 2.异常:Compile failed; see the compiler error output for details. 解决方法:编码统一 一般都是中文字符出现问题,找到异常文件定位,修改文件编码(myeclipse): Edit->Set Encoding 3.异常:Openfire 代码部署报错: Variable references non-existent resource:${workspace_loc:openfire_src} 解决方法:路径不正确。 4.集群配置中异常:java.lang.IllegalArgumentException: PortableFactory[-21] is already registered! com.hazelcast.concurrent.atomicreference.client.AtomicReferencePortableHook$1@1ea8ee25 -> com.hazelcast.concurrent.atomicreference

openfire集成已有数据库

我与影子孤独终老i 提交于 2020-03-27 09:55:02
3 月,跳不动了?>>> 0问题场景 假如我们有一个网站并且已经有了上百万的注册用户,现在要集成一个IM即时聊天功能,假如我们使用开源的xmpp服务器,都会自动生成默认的数据库以及表结构,用已有数据库的用户表去初始化IM服务器的用户表,不仅麻烦而且涉及到同步问题。所以xmpp服务器都提供了集成数据库的功能。我们可以通过配置修改,把登录认证,用户查询,用户分组等信息,从IM服务器的默认数据库剥离出来。tigase目前只支持mysql,pgsql,derby三种数据库集成,openfire支持的比较多。本文讲的是openfire集成oracle。 1官方文档 官方文档: Custom Database Integration Guide 2问题解决 问题一: <jdbcProvider> <driver>com.mysql.jdbc.Driver</driver> <connectionString>jdbc:mysql://localhost/dbname?user=username&password=secret</connectionString> </jdbcProvider> 文档中只提供了mysql的外接数据库连接方式,如果是oracle的数据库就要注意了,按照上面的那种拼接时错误的 Oracle的connectionString的字符串应该是 jdbc:oracle

Openfire插件开发图解

让人想犯罪 __ 提交于 2020-03-18 18:07:52
概述 Openfire插件开发是Openfire的精髓之一,支持插件热插拔,还可以方便的在web端进行管理插件。插件分为两种,一种是以服务为主的控制台插件,一种是包括页面或对外开放Servlet接口。这里我们先描述开发控制台插件。根据 上一篇的源码部署 (http://www.cnblogs.com/mvilplss/p/6005158.html)相信你已经成功部署好了,那么我们就开始写自己的插件吧! 准备 系统环境:window10(surface pro4) JDK:1.7 or later 开发工具:eclipse-Mars.2 Release (4.5.2) Openfire版本:4.0.3 步骤 在openfire源码中,我们看到很多自带的插件,我们就参考自带的插件进行开发。以下都是自带的插件。 我们参考上面插件的结构进行创建自己的一个插件目录。 l 在项目根部创建一个source folder。 l 文件名称folder name为:src/plugins/helloword/src/java l 创建包,名称参考其他现有插件 l 创建一个类,实现Plugin接口 1 package org.jivesoftware.openfire.plugin; 2 3 import java.io.File; 4 5 import org.jivesoftware

Openfire的web插件开发

倖福魔咒の 提交于 2020-03-18 17:49:09
概要 Openfire不仅支持普通插件开发,还支持完整的web插件开发,这次就web插件开发做一个小的实例,本文主要讲解如何加入Servlet和Jsp页面,基本插件的开发请参照上一篇文章。 准备 系统环境:window10(surface pro4) JDK:1.7 or later 开发工具:eclipse-Mars.2 Release (4.5.2) Openfire版本:4.0.3 步骤 在openfire根目录下创建资源包和class包,然后创建一个Servlet类。 创建一个类实现Plugin用来被openfire识别 Servlet创建完成,我们参照其他web插件手动创建src/plugins/helloweb下的web结构,跟javaweb中的结构类似。 配置servlet到web.xml 创建helloweb.jsp页面 配置plugin.xml 编译运行 验证是否成功 说明 Web插件开发时候,必须有一个类实现Plugin接口来注册这个插件,否则添加不成功(推测,你们可以尝试下)。 所有Servlet的地址为plugins/服务名称/url-pattern(url-pattern是web.xml中拦截的地址,连接全部都要小写)。 若web插件不需要登陆openfire就能访问的话需要在Servlet启动的时候将地址加入例外 AuthCheckFilter

安卓平台下的即时通讯 .

。_饼干妹妹 提交于 2020-03-13 17:29:53
摘要: 论文简单介绍Android 平台的特性,主要阐述了基于Android 平台简易即时通讯(IM)的 作用和功能以及实现方法,复杂的通讯如引入视频音频等可以考虑AnyChat SDK。 关键词: Android 平台;即时通讯 (本文中图表点击附件即可见) 1 Android 平台简介 Android 是Google 公司于2007年11月5日推出的手机操作系统 ,经过2年多的发展,Android平台在智能移动领域占有不小的份额,由Google为首的40 多家移动通信领域的领军企业组成开放手机联盟(OHA)。Google 与运营商、设备制造商、开发商和其他第三方结成深层次的合作伙伴关系,希望通过建立标准化、开放式的移动电话软件平台,在移动产业内形成一个开放式的生态系统。正因如此,Android 正在被越来越多的开发者和使用者所接受。近日,Google 发言人Anthony House称, 截止到2010 年4 月15 日,Android Market 已经有3.8 万多个应用程序。 2 Android 平台特性与即时通讯的研究   Android 平台框架共由5 部分组成。底层核心是基于 Linux 2.6内核 开发的独立操作系统,该层用来提供系统的底层服务,包括安全机制、内存管理、进程管理、网络堆栈及一系列的驱动模块。中间是Android 执行环境,包括系统运行库