gpt4 book ai didi

sockets - 将我的头缠在Socket.io Client API上

转载 作者:行者123 更新时间:2023-12-03 12:04:29 24 4
gpt4 key购买 nike

通常,当我们使用HTTP请求时,我们有一组特定的方法/回调,当请求成功/失败时将被调用。每个连接请求可以有自己的回调方法,这使代码的结构非常容易。

因此,现在我正在尝试Socket.io进行新项目时,我全都感到困惑。例如,您向套接字连接发送了一条消息,您就完成了。那里没有回调。我无法通过一种简单的方法来知道该方法是否成功通过编写以下方法来模拟回调:

public void emitRequest(final String event, JSONObject data, final emitResponseListener pListener)
{
mSocket.on(event+"_resp", new Listener() {
@Override
public void call(final Object... args) {
((Activity)c).runOnUiThread(new Runnable() {
@Override
public void run() {
JSONObject data = (JSONObject) args[0];
if (pListener!=null)
{
pListener.onResponseRecieved(data);
}
}
});
}
});
mSocket.emit(event,data);
}

此方法在发出 event之后监听来自服务器的 event _resp消息。但是,就我所知。我不知道如何处理特定发射的错误,以便更新UI或通知用户.etc。

当然,有针对 Socket的回调事件,但这些事件无法连接到应用程序流中。

那么,有人知道实现此目标的方法吗?我搜索了很多,但找不到任何东西。我正在使用Java客户端,但是欢迎任何客户端API的通用答案。

最佳答案

您必须更改 View -而不是让回调考虑事件,并相应地根据您的设计。

当向套接字服务器发出请求时,生成一个唯一的 token 。将 token 发送到服务器,并让服务器将其与请求响应一起发送回去。使用 token ,您可以注册一个回调,该回调将针对与请求响应事件和此 token 匹配的事件而触发。

这样,您可以一个接一个地执行调用。

为了涵盖服务器未返回响应的情况,我们使用30秒的超时时间。由于套接字断开,大约99.9%的时间我们没有得到响应,因此套接字错误回调在成功重新连接后处理了该错误,而没有达到超时。

关于sockets - 将我的头缠在Socket.io Client API上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35025675/

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