gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 01:07:26 25 4
gpt4 key购买 nike

我正在开发一个实时聊天 android 应用程序,我需要连接 socket.io 以进行实时响应。我遵循了本教程: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;
}
}

服务器地址:

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

我已经连接了这个 Activity 中的 socket.io 并得到了完美的响应。

在此 Activity 中,我附加了回收器适配器以显示与 friend 的一对一完整对话。为了查看完整的对话,我使用了改造。

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

在此 Activity 中,我通过“用户名”事件连接套接字并调用“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();
}
});

}
};

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

这是我要实现的 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"
}
}

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

最佳答案

明白了。通过反射将模型类用作 JSONOBject。在 Emitter.Lister 响应中添加此代码

        Gson gson= new Gson();
socketData=gson.fromJson(abc.toString(),SocketData.class);

关于android - 在 android 客户端中获取 socket.io 响应,但无法理解如何在回收器适配器中实现响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45892399/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com