在 android 客户端中获得 socket.io 响应,但无法理解如何在回收器适配器中实现响应
Getting socket.io response in android client, but can't understand how to implement the response in recycler adapter
我正在开发一个实时聊天 android 应用程序,我需要连接 socket.io 以进行实时响应。我遵循了本教程:https://socket.io/blog/native-socket-io-and-android/ 并且我已经在我的 android 应用程序中成功实施了 socket.io 并获得了祝酒词的响应。
这里是Socket连接class:
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";
}
我已经在这个 Activity 中连接了 socket.io 并且得到了完美的响应。
在此 activity 中,我附上了回收器适配器以显示与朋友的一对一完整对话。为了查看完整的对话,我使用了改造。
这里是 activity 代码 link
https://pastebin.com/b22ehMFE
在这个 activity 中,我通过 "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 class 作为 JSONOBject。在 Emitter.Lister 响应
中添加此代码
Gson gson= new Gson();
socketData=gson.fromJson(abc.toString(),SocketData.class);
我正在开发一个实时聊天 android 应用程序,我需要连接 socket.io 以进行实时响应。我遵循了本教程:https://socket.io/blog/native-socket-io-and-android/ 并且我已经在我的 android 应用程序中成功实施了 socket.io 并获得了祝酒词的响应。
这里是Socket连接class:
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";
}
我已经在这个 Activity 中连接了 socket.io 并且得到了完美的响应。
在此 activity 中,我附上了回收器适配器以显示与朋友的一对一完整对话。为了查看完整的对话,我使用了改造。
这里是 activity 代码 link https://pastebin.com/b22ehMFE
在这个 activity 中,我通过 "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 class 作为 JSONOBject。在 Emitter.Lister 响应
中添加此代码 Gson gson= new Gson();
socketData=gson.fromJson(abc.toString(),SocketData.class);