如何使用 Smack 了解 XMPP openfire 中的打字状态

2023-11-27

我正在使用 Openfire XMPP 服务器开发聊天应用程序。我可以在两个用户之间进行文字聊天。但我想知道有人正在输入消息时的输入状态。所以我创建了一个类:-

public class typingStatus implements ChatStateListener {

    @Override
    public void processMessage(Chat arg0, Message arg1) {
        // TODO Auto-generated method stub

    }

    @Override
    public void stateChanged(Chat arg0, ChatState arg1) {
        // TODO Auto-generated method stub
        System.out.println(arg0.getParticipant() + " is " + arg1.name());

    }

}

但我很困惑,所以它会如何工作?我知道我需要一个数据包,我可以在监听器中找到它。但我找不到那个数据包。

请任何人建议,它将如何运作?

Smack 和 asmack 之间有什么区别?

谢谢你!


启用ChatStateListener你需要创建一个自定义MessageListener Class

public class MessageListenerImpl implements MessageListener,ChatStateListener  {

    @Override
    public void processMessage(Chat arg0, Message arg1) {
        System.out.println("Received message: " + arg1);

    }

    @Override
    public void stateChanged(Chat arg0, ChatState arg1) {
        if (ChatState.composing.equals(arg1)) {
            Log.d("Chat State",arg0.getParticipant() + " is typing..");
        } else if (ChatState.gone.equals(arg1)) {
            Log.d("Chat State",arg0.getParticipant() + " has left the conversation.");
        } else {
            Log.d("Chat State",arg0.getParticipant() + ": " + arg1.name());
        }

    }

}

然后你创建MessageListener object

MessageListener messageListener = new MessageListenerImpl();

然后将其传递到创建聊天方法中

Chat newChat = chatmanager.createChat(jabber_id_of_friend, messageListener);

Smack 和 asmack 和有什么区别? <-- 检查这个

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Smack 了解 XMPP openfire 中的打字状态 的相关文章

随机推荐

  • 在 PHP 中按子数组的值对数组进行排序

    我有一个由数组组成的数组 我想根据子数组的属性对父数组进行排序 这是一个例子 array 2 0 gt array 3 0 gt string 6 105945 1 gt string 10 First name 2 gt float 0
  • innerHTML:如何避免

    我正在编写一个插件 它将表情符号转换为特定网站文本块中的图像 简单的答案是使用正则表达式来检测innerHTML上的触发文本并插入img标签 然后将字符串通过管道传回中的dom元素内部HTML部分 DOM 元素块可能已经有锚点 a 和 或文
  • 如何在 VC++ 项目中关闭 Unicode?

    我在 Visual Studio 2008 中有一个 VC 项目 它在编译器命令行上定义 unicode 的符号 D UNICODE D UNICODE 即使我没有在项目的预处理器部分中打开此符号 因此 我针对所有 Win32 库函数的 U
  • ZeroMQ - 多个发布者和监听器

    我刚刚开始了解并尝试 ZeroMQ 我不清楚如何在两个以上的参与者 发布者和订阅者 之间进行双向通信 以便每个组件都能够在 MQ 上读取和写入 这将允许创建事件驱动的架构 因为每个组件都可以侦听一个事件并回复另一个事件 有没有办法直接使用
  • 如何在 WPF 中从 C# 获取超链接文本?

    我有一个WPFHyperlink我正在尝试从中获取文本内容 例如
  • 如何将 gitlab 备份迁移到具有最新 gitlab 版本的新服务器

    我正在尝试将旧服务器的 gitlab 备份迁移到新服务器 我的旧服务器有 gitlab gitlab 6 5 1 0 我的新服务器有 gitlab 版本 gitlab 6 6 5 omnibus 我使用以下命令从旧服务器进行备份 bundl
  • 从嵌套 for 循环继续 while

    我有以下循环结构 while reader Read eq true row for i 0 i lt reader FieldCount i if something continue with while do more stuff 现
  • 如何在 SSIS 中为 Excel 文件设置动态文件路径?

    文件名随月份而变化 每个月您都会有一个新文件 I Test Data 201303 xlsx 如何设置可使用可变文件路径的连接管理器 在连接管理器上查找 表达式 属性 这就是您将其设置为 USER VariableName 的地方 更详细
  • 解析中缀表示法的表达式的算法是什么?

    我想在 PHP 中解析布尔表达式 如 A and B or C and D or F or not G 这些术语可以被视为简单的标识符 它们会有一些结构 但解析器不需要担心这一点 它应该只识别关键字and or not 其他一切都是一个术语
  • 如何用二进制字段进行选择? (php、mysql)

    尝试在 mysql 语句中选择使用 where 子句 例如 表 X 具有 BINARY 数据类型的 ID 列 然后保存到php的变量中 aid row id 稍后当我尝试从表中选择时如何使用此变量 where where ID aid qu
  • 什么用户正在运行我的 Rails 应用程序?

    我正在尝试在 Apache Passenger 3 0 0 和 Rails 3 0 3 下部署一个简单的 Rails 应用程序 我收到各种奇怪的错误 主要围绕我认为与捆绑器或 RAILS ENV 相关的内容 该应用程序唯一的非默认情况是开发
  • 用 jQuery 中的新行替换结果集中的逗号

    我过去从未做过这样的事情 我想知道这是否确实可能 我允许在 an 中添加多个代码 只要它们以逗号分隔即可 我想要做的是 当用户单击 确定 按钮时 显示输入的数字将显示它们一个一个在彼此之上 旁边有一个 删除 按钮 这部分很容易 困难的部分是
  • 在 Google Play 上向有限数量的用户发布

    我想将我的应用程序发布给有限的一组用户 不特定于国家 地区和运营商 我在网上搜索发现this 然而 这导致了混乱 文件一开始就说我们可以创建一个私人渠道来在整个组织中分发应用程序 Google Apps for Business Educa
  • 在注释该线程的 pthread_join 时多次执行同一线程子例程[重复]

    这个问题在这里已经有答案了 我是线程新手 在这里 如果我评论 pthread join thread1 NULL 那么在输出中有时我会得到 Thread2 Thread1 Thread1 我无法理解为什么 Thread1 跟踪会出现两次以及
  • 计算 PySpark DataFrame 列的众数?

    最终我想要的是 DataFrame 中所有列的列模式 对于其他汇总统计信息 我看到了几个选项 使用 DataFrame 聚合 或将 DataFrame 的列映射到向量的 RDD 我也遇到了麻烦 并使用colStats来自 MLlib 但我不
  • 查找字节数组中的字节序列

    我有一个字节数组 希望找到某些字节的 出现 例如00 69 73 6F 6D在一个非常大的字节数组中 gt 50 100 MB OR 更好的是反向操作 在不知道的情况下搜索最常见的模式 代码应该能够从文件中读取并找到它 您可以使用 Boye
  • 使用 TypeScript 在节点应用程序中导入 JSON 文件

    我真的快疯了 因为我找不到解决方案 我想要存档的是将带有配置的 JSON 文件导入到我的 TypeScript 文件中 我了解到我需要一份声明文件 所以我在我的项目中添加了一个文件 json loader d ts 我还在多个级别 根 ty
  • 内部偏好屏幕黑屏

    My PreferenceActivity包含一个嵌套的PreferenceScreen在另一个PreferenceScreen我正在将一个主题应用到我的PrefenceActivity改变背景颜色 但是当我打开嵌套的PreferenceS
  • 关闭父对话框时关闭子对话框

    我正在使用 C 编写 Windows shell 扩展EZShellExtensions NET 我提供了一个显示对话框的上下文菜单 假设我显示一个资源管理器窗口 A 然后我使用上下文菜单显示非模式窗口 B 在Windows XP和Wind
  • 如何使用 Smack 了解 XMPP openfire 中的打字状态

    我正在使用 Openfire XMPP 服务器开发聊天应用程序 我可以在两个用户之间进行文字聊天 但我想知道有人正在输入消息时的输入状态 所以我创建了一个类 public class typingStatus implements Chat