在android客户端中获取socket.io响应,但无法理解如何在回收器适配器中实现响应

2024-02-29

我正在开发一个实时聊天 Android 应用程序,我需要连接 socket.io 以获得实时响应。我按照这个教程进行操作:https://socket.io/blog/native-socket-io-and-android/ https://socket.io/blog/native-socket-io-and-android/我已经在我的 Android 应用程序中成功实现了 socket.io 并在祝酒词中得到了响应。

这是 Socket 连接类:

    import android.app.Application;
    import java.net.URISyntaxException;
    import io.socket.client.IO;
    import io.socket.client.Socket;

    public class ChatApplication extends Application {

    private Socket mSocket;
      {
        try {
            mSocket = IO.socket(Constants.CHAT_SERVER_URL);
            } catch (URISyntaxException e) {
              throw new RuntimeException(e);
            }
      }

    public Socket getSocket() {
            return mSocket;
            }
    }

这是服务器的 url:

    public class Constants {
        public static final String CHAT_SERVER_URL = 
        "https://pubsub.XXX.com:3000";
    }

我已在此活动中连接了 socket.io 并得到了完美的响应。

在此活动中,我附加了回收器适配器来展示与朋友的一对一完整对话。为了查看完整的对话,我使用了改造。

这是活动代码链接https://pastebin.com/b22ehMFE https://pastebin.com/b22ehMFE

在此活动中,我通过“username”事件连接了套接字并调用“onNewMessage”函数。

     // initialize Socket
        ChatApplication app = (ChatApplication) getApplication();
        mSocket = app.getSocket();
        mSocket.on(Socket.EVENT_CONNECT, onConnect);
        mSocket.on(username, onNewMessage);
        mSocket.connect();

我在 public Emitter.Listener onNewMessage 中获得实时服务器响应

    public Emitter.Listener onNewMessage = new Emitter.Listener(){

        @Override
        public void call(final Object... args) {
            MsgChatActivity.this.runOnUiThread(new Runnable(){

                @Override
                public void run() {
                    //args[i] is the data received
                    JSONObject abc = (JSONObject) args[0];

                    Toast.makeText(MsgChatActivity.this, ""+ abc,
                            Toast.LENGTH_LONG).show();
                }
            });

        }
    };

现在,我需要在适配器视图中显示响应,但我不明白该怎么做。

这是我想要实现的 JSON 格式的服务器响应,

pn类型:聊天

{
  "alertId": "xxxxxxxxxxxxxx",
  "originator": {
    "id": "1",
    "username": "jon",
    "url": "\/jon",
    "full_name": "jon smith",
    "avatar": "\/uploads\/images\/1491902152.jpg",
    "cover": "\/uploads\/images\/1491902130.jpg",
    "is_active": "1",
  },
  "queId": "1503725762883",
  "content_id": "4066",
  "msg": "",
  "media": {
    "sticker": "\/defaultMedia\/stickers\/BlueCat\/3.png"
  },
  "pnType": "chat",
  "unRead": "1"
}

和 pnType:聊天输入

          {
           "pnType": "chatTyping",
           "originator": {
           "id": "1",
           "name": "jon"
           }
          }

谁能帮助我在适配器中实现响应?提前致谢。


知道了。通过反射将 Model 类用作 JSON 对象。在 Emitter.Listener 响应中添加此代码

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

在android客户端中获取socket.io响应,但无法理解如何在回收器适配器中实现响应 的相关文章

  • 关闭 Android 中的飞行模式

    如果 num gt 50 我想关闭飞行模式 我实现了这段代码 来自在 Android 中切换飞行模式 https stackoverflow com questions 5533881 toggle airplane mode in and
  • 定期运行任务(每天一次/每周一次)

    我想定期 每周 每天一次 运行一些任务 即获取我的网站新闻页面 即使我的应用程序已关闭 是否可以 是的 您需要查看报警管理器 http developer android com reference android app AlarmMan
  • 按回键隐藏软键盘

    我有一个EditText in an Activity我希望当我打开它时它处于活动状态并且软键盘处于打开状态Activity 这是我的xml for EditText
  • 为什么我将可绘制文件重命名为 .9.png 后出现“Some file crunching failed”?

    我正在测试 9 patch 图像 在一切正常之前 我重命名drawable file ic button beat box default png to ic button beat box default 9 png 然后我收到错误 某些
  • 如何将 EditText 传递给另一个活动?

    Intent intent new Intent this Name class intent putExtra key et getText toString startActivity intent Intent intent getI
  • 如何使用 adb 在设备上安装现有的 Android 应用程序?

    在开发过程中 我使用类似的东西 adb s 192 168 1 77 5555 uninstall com myApp app adb s 192 168 1 77 5555 install path to android debug ap
  • Android Lollipop prepareAsync() 需要很长时间才能返回

    在 Samsung Galaxy Note 4 上的 Android Lollipop 几周前刚刚从 4 4 4 更新 上 prepareAsync 几乎需要 20 秒来加载实时流 在 4 4 4 上 只需要 2 3 秒 并且没有错误 见下
  • Android - 当不在栏顶部时推送通知空白

    我在使用 Android 推送通知时遇到一个小问题 如果有 3 个通知 并且只有其中一个显示标题和消息 位于酒吧顶部的那个 如果有人知道可能是什么问题 请告诉我 请参阅此链接上的图像 这就是我接收通知的方式http postimg org
  • Android-工具栏中的SearchView

    我只想在我的应用程序中添加 searchview 但我不想搜索任何东西 只是我想要用户输入的查询 到目前为止 我尝试了这段代码 但是当我运行我的应用程序时它崩溃了 Update 我尝试了这个 但即使我的应用程序崩溃了 main menu x
  • Android中不同线程的数据库访问

    我有一个在 AsyncTasks 中从互联网下载数据的服务 它解析数据并将其存储在数据库中 该服务持续运行 当服务写入数据库时 活动会尝试从数据库中读取更改 我有一个数据库助手 有多种写入和读取方法 这会导致问题吗 可能尝试从两个不同的线程
  • Android Studio - 如何关闭“单词‘word’中的拼写错误?”

    当命名变量或给出字符串参数时 Android Studio 似乎对我如何标记事物有问题 有办法把它关掉吗 是的 打开Preferences gt Editor gt Inspections gt Spelling gt 关闭Typo并按OK
  • 获取可以共享数据的应用程序列表

    此代码显示默认共享对话框 Intent sharingIntent new Intent Intent ACTION SEND sharingIntent setType text html sharingIntent putExtra a
  • AnalyticsService 未在应用程序清单中注册 - 错误

    我正在尝试使用 sdk 中提供的以下文档向 Android 应用程序实施谷歌分析服务 https developers google com analytics devguides collection android v4 https d
  • Google 移动广告和 Kindle Fire

    我最近用 Google 移动广告替换了 AdMob 库 对此我有一个疑问 广告会出现在 Amazon Kindle Fire 设备上吗 我问这个是因为我知道 Google 移动广告依赖于 Google Play 服务 所以我有点困惑 Goo
  • Android GCM 服务器的 API 密钥

    我有点困惑我应该为 GCM 服务器使用哪个 API 密钥 在文档中它说使用 android api 密钥 这对我不起作用并且总是给出未经授权的 http developer android com google gcm gs html ht
  • 通过列表视图检查动态生成的复选框时遇到问题

    我知道其他成员已经提出了这个问题 一些成员也给出了解决方案 但问题是我没有找到任何适合我的应用程序的解决方案 我正在创建一个应用程序 其中我有一个屏幕 它将显示动态列表视图 其中包含列表项 复选框和三个文本视图 一个用于候选人姓名 另外两个
  • 从手机访问本地主机[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我正在使用
  • 删除Android所有语言中的字符串

    我有一个包含多个翻译的应用程序 我想删除一些字符串 我怎样才能重构并删除它们一次 例如在默认情况下strings xml文件并自动将删除传播到其他翻译的其他 strings xml 文件 您可以通过 Android Studio 中的 翻译
  • 在 Android 布局 xml 文件中使用字符串格式参数 [重复]

    这个问题在这里已经有答案了 我在 String xml 文件中定义了一个使用格式参数的字符串 即
  • putFragment() - 片段 x 当前不在 FragmentManager 中

    上面的标题被问了很多次 但答案似乎与FragmentStatePagerAdapter这与我的问题无关 我正在使用该方法putFragment Bundle String Fragment 直接地 The 安卓文档 http develop

随机推荐

  • 更改 EF4 中的数据库表名称(实体框架 4)

    有谁知道如何更改 EF4 实体框架 4 中实体的映射数据库表 稍后编辑 我想我已经在模型浏览器中找到了定义表名称的位置 但它们的名称是只读的 因此无法使用设计器对其进行编辑 另外 在 xml 模式中没有对表名称的引用 根据我的搜索 如果您只
  • unittest 测试用例中的重复代码

    我有一个如下所示的测试用例 def MyTestCase unittest Testcase def test input01 self input read from disk input01 output run input valid
  • 为什么字符范围类 [A-z] 匹配下划线?

    在多种语言中尝试过 结果相同 JavaScript 示例 A z test gt true A z test 0 gt false A z test gt false A z test A gt true 为什么第一个病例没有返回false
  • 使用 JavaScript 调整图像大小并保存到磁盘

    我试图将由 JavaScript 完成的调整大小的图像上传到服务器 所以我尝试使用调整大小的图像设置文件输入 后来我才知道除非用户选择文件 否则我们无法更改文件输入 https stackoverflow com questions 169
  • 如何在服务器上定位Sh​​arepoint文档库源页面?

    我正在使用 Sharepoint 文档库 并且正在尝试查找文档库页面的源 我正在 Sharepoint 服务器上工作 我就是找不到它 它应该存放在哪里 谢谢你 SharePoint 不会将页面直接存储在文件系统中 该机制有点不那么简单 要了
  • 多线程游戏 - 更新、渲染以及如何拆分它们

    所以 我正在开发一个游戏引擎 并且已经取得了很好的进展 然而 我的引擎是单线程的 将更新和渲染分成单独的线程的优点听起来是一个非常好的主意 我该怎么做 单线程游戏引擎 概念上 非常容易制作 你有一个更新 gt 渲染 gt 睡眠 gt 重复的
  • Docker:b'json:无法将数字解组到字符串类型的 Go 结构字段 LogConfig.Config 中

    我在 docker compose 中将我的应用程序配置为使用轮换日志 遵循以下站点中的操作 https medium com Quigley Ja rotating docker logs keeping your overlay fol
  • Maven资源过滤

    我想将构建信息写入属性文件 我找到了 Maven 资源过滤插件 这就是我的 pom 相关部分的样子
  • 如何应用结构来对视图控制器操作的数据进行建模

    我尝试在应用程序设计中更多地采用 Swift 的值类型 但我遇到了一些初学者困难 我知道那些基于意见的 StackOverflow 格式通常不太受欢迎 但我认为这里有可能不是特别主观的最佳实践 我理解结构的所有理论上的好处 关于避免共享可变
  • 无法绑定到“ngForOf”,因为它不是 Angular 9 中“tr”的已知属性

    ngFor在我的应用程序中不起作用 我将我的应用程序分成单独的模块并包含import CommonModule from angular common 进入我的子模块并import BrowserModule from angular pl
  • 将常量呈现到 XML 文档中?

    我有 2 个私有常量和一个公共方法 private const byte minAge 24 private const byte maxAge 29 public bool IsInAgeRange 我正在添加 XML 文档 并且希望我的
  • TFSBuild 命令行 / vNext 2015

    前提 我认为这是 TFS 2015 中的错误 缺失功能 当我使用 TFS 网站创建新的构建 非 xaml 定义时 我无法使用命令行调用它TFSBuild start命令 如果我创建标准 XAML 定义 我可以使用命令行启动它 知道命令行是否
  • Flyway并发迁移

    我们有许多项目在许多服务器上运行 并查找一个数据库 我们正在考虑为每个项目设置 Flyway 来控制我们的数据库结构 但是我们担心并发迁移问题 如果某些项目在同一时间重新部署 当然 我们总是关心sql语法中的 如果存在 的事情 当同一数据表
  • Laravel 更改输入值

    在 Laravel 中 我们可以通过以下方式获取输入值Input get inputname 我尝试通过这样做来改变值Input get inputname new value 但后来 我收到错误消息说Can t use function
  • 处理包含多行的 Excel 文件时出现错误 502

    处理包含多行的 Excel 文件时出现错误 502 使用 Django Nginx 问题不在于文件的大小小于 1Mb 此页面可以正常处理 200 行的文件 当文件有更多行时问题就会出现 然后页面处理此文件的时间太长 这是错误 2012 07
  • 将图例移动到 ggplot2 的底部[重复]

    这个问题在这里已经有答案了 我创建了以下热图 如果您注意到群组的图例位于右侧且垂直放置 如何将图例移动到底部 以便为 X 轴变量月份 M0 到 M55 提供更多空间 此外 您会注意到 X 轴元素重叠 因此不清楚 图表的输出 cohort c
  • 拆分 pandas DataFrame 元素中的字符串并重新组合列表的一部分

    我试图弄清楚如何在 pandas 元素中拆分字符串 然后重新组合拆分字符串的一部分 我有以下代码 import pandas as pd df pd DataFrame code PC001 S002 D CFI4 1 NN PC001 S
  • .NET 控制台应用程序中的 Thread.CurrentPrincipal

    这是我在命令提示符下运行的一个简单的控制台应用程序 using System using System Threading namespace Test internal class Runner STAThread static void
  • 如何在.Net core控制台应用程序中使用依赖注入

    我必须使用控制台应用程序将数据添加到我的数据库中 在 Main 方法中我添加了 var services new ServiceCollection var serviceProvider services BuildServiceProv
  • 在android客户端中获取socket.io响应,但无法理解如何在回收器适配器中实现响应

    我正在开发一个实时聊天 Android 应用程序 我需要连接 socket io 以获得实时响应 我按照这个教程进行操作 https socket io blog native socket io and android https soc