重新连接到我的 socket.io 服务器后,没有收到从我的 android 设备发送的事件
Posted
技术标签:
【中文标题】重新连接到我的 socket.io 服务器后,没有收到从我的 android 设备发送的事件【英文标题】:After reconnecting to my socket.io server does not receive the event sent from my android device 【发布时间】:2020-11-22 17:33:05 【问题描述】:我真的看不出有什么问题,在安卓手机上,我连接到我的服务器节点 js socket.io,所有事件都正常工作。但是如果我切断连接并重新激活它。服务器检测到重新连接。但是从手机发送到服务器的事件,服务器并没有收到。
我创建了一个带有允许重新连接的参数的套接字:
private Socket socket;
try
IO.Options opts = new IO.Options();
opts.forceNew = false;
opts.reconnection = true;
opts.reconnectionAttempts = Integer.MAX_VALUE;
opts.reconnectionDelay = 1000;
opts.reconnectionDelayMax = 5000;
socket = IO.socket(Constant.URL_SOCKET, opts);
catch (URISyntaxException e)
e.printStackTrace();
显然我没有忘记调用 onCreate :
socket.connect();
actionSocket();
这里我的监听器也调用 onCreate :
socket.on(Socket.EVENT_CONNECT, new Emitter.Listener()
@Override
public void call(Object... args)
actionSocket();
);
socket.on(Socket.EVENT_RECONNECT, new Emitter.Listener()
@Override
public void call(Object... args)
actionSocket();
);
actionSocket对应这个函数:
socket.on("toast", new Emitter.Listener()
@Override
public void call(Object... args)
runOnUiThread(new Runnable()
@Override
public void run()
Toast.makeText(MainActivity.this, "Toast", Toast.LENGTH_SHORT).show();
);
);
为了测试重新连接,我得到了这个按钮:
button.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View v)
socket.emit("toast", new JSONObject());
);
服务器端:
io.on('connection', function(socket)
console.log("connection");
addSocketListeners(socket);
);
还有 addSocketListeners()
function addSocketListeners(socket)
socket.on("toast", function(data)
socket.emit("toast", );
);
希望我的问题很清楚。感谢所有帮助我的人。
【问题讨论】:
真的可以重新连接套接字吗?还是你创建了一个新的套接字? 不,我不是在创建一个新实例,重新连接确实是可能的。 【参考方案1】:试试这个:
off
断开socket时的事件和on
每次连接时的事件
socket.off("toast");
编辑:使用 removeAllListeners 代替关闭:
io.on('connection', function(socket)
socket.on("disconnect", function()
socket.removeAllListeners("toast");
);
);
【讨论】:
我正在尝试,请稍等 这项工作与 removeAllListeners("toast"),谢谢!以上是关于重新连接到我的 socket.io 服务器后,没有收到从我的 android 设备发送的事件的主要内容,如果未能解决你的问题,请参考以下文章
Socket.io - nodejs 服务器端。重新连接后传输关闭
socket.io 不工作,我的颤振应用程序没有连接到服务器或后端部分
Socket.io 不会按需关闭套接字(并且不允许我的 swift 应用程序再次重新连接到 node.js 服务器)
socket.io javascript客户端在重新启动服务器后无法重新连接