gpt4 book ai didi

java - Android - 使用套接字io从服务器接收消息

转载 作者:行者123 更新时间:2023-12-01 04:13:26 26 4
gpt4 key购买 nike

我正在使用 Gottox 的 Socket.IO-Java-Client(以及 koush 的 AndroidAsync)开发 Android 应用程序。连接到套接字或通过套接字发送消息没有问题,但我没有从套接字接收消息或响应。

该 Activity 首先通过 API 接收消息列表,然后打开套接字来发送和接收传出/传入消息。如果我重新启动 Activity ,则会出现任何新消息,但这是通过 API - 我需要在 Activity 仍处于打开状态时从套接字接收它们。

这是我的套接字相关代码:

public final void openSocket() {
try {
socket = new SocketIO(SERVER_URL);
socket.connect(this);
join();
} catch (MalformedURLException e) {
e.printStackTrace();
}
}

public void join() {
try {
JSONObject json = new JSONObject();
json.putOpt("join", mChat.getID());
socket.emit("join", this, json);
// socket.emit("join", json);
} catch (Exception ex) {
ex.printStackTrace();
}
}

public void sendMessage() {
try {
System.out.println("Send: " + content.getTextWithEmojis());
JSONObject json = new JSONObject();
json = prepareJSONObject(json);
// socket.emit("send", this, json);
socket.emit("send", json);
content.setText("");
addChat(json);
} catch (JSONException ex) {
ex.printStackTrace();
}
}

public void addChat(JSONObject jObject) {
ChatPost post;
try {
post = parseJSONObject(jObject);
mChatMessages.add(Arrays.asList(new ChatPost[] {post}));
} catch (JSONException e) {
e.printStackTrace();
}
}

@Override
public void onMessage(JSONObject json, IOAcknowledge ack) {
try {
Log.i(TAG, "Server said:" + json.toString());

if(json.has("args")) {
JSONArray jArray = json.getJSONArray("args");
JSONObject jObject = jArray.getJSONObject(0);

ChatPost post;
post = parseJSONObject(jObject);
mChatMessages.add(Arrays.asList(new ChatPost[] {post}));
}
} catch (JSONException e) {
e.printStackTrace();
}
}

@Override
public void onMessage(String data, IOAcknowledge ack) {
Log.i(TAG, "Server said: " + data);
}

@Override
public void onError(SocketIOException socketIOException) {
Log.i(TAG, "an Error occured");
socketIOException.printStackTrace();
}

@Override
public void onDisconnect() {
Log.i(TAG, "Connection terminated.");
}

@Override
public void onConnect() {
Log.i(TAG, "Connection established");
}

@Override
public void on(String event, IOAcknowledge ack, Object... args) {
Log.i(TAG, "Server triggered event '" + event + "'");
if (args.length > 0)
Log.i(TAG, "Args '" + args[0].toString() + "'");
for (Object arg : args)
Log.i(TAG, "Args '" + arg.toString() + "'");
}

日志:

I/io.socket(9753): > 5:::{"args":[{"join":"101"}],"name":"join"}
I/io.socket(9753): < 1::
I/io.socket(9753): < 5:::{"name":"ready"}
I/io.socket(9753): < 2::
I/io.socket(9753): < 2::
I/io.socket(9753): > 2::
I/io.socket(9753): > 2::
I/io.socket(9753): > 5:::{"args":[{"content":"test","chat_id":"101","user_id":"5"}],"name":"send"}
I/io.socket(9753): < 2::
I/io.socket(9753): > 2::

我收到了“加入”的回复,但没有收到“发送”的回复。我错过了什么吗?

编辑:我尝试使用 koush 的 AndroidAsync,但遇到了同样的问题。

最佳答案

抱歉,原来是后端问题

关于java - Android - 使用套接字io从服务器接收消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19670074/

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