Javascript 在重新连接到我的socket.io之后,服务器没有收到从我的android设备发送的事件
我真的不知道出了什么问题,在安卓手机上,我连接到我的服务器节点js socket.io,所有的事件都成功了。但如果我切断连接并重新激活它。服务器检测到重新连接。但从手机发送到服务器的事件不会被服务器接收 我创建了一个套接字,其参数允许重新连接:Javascript 在重新连接到我的socket.io之后,服务器没有收到从我的android设备发送的事件,javascript,android,node.js,websocket,socket.io,Javascript,Android,Node.js,Websocket,Socket.io,我真的不知道出了什么问题,在安卓手机上,我连接到我的服务器节点js socket.io,所有的事件都成功了。但如果我切断连接并重新激活它。服务器检测到重新连接。但从手机发送到服务器的事件不会被服务器接收 我创建了一个套接字,其参数允许重新连接: private Socket socket; { try { IO.Options opts = new IO.Options(); opts.forceNew = false; opts.reco
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();
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();
}
});
在这里,我的侦听器还调用onCreate:
socket.connect();
actionSocket();
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()
希望我的问题清楚。感谢所有帮助我的人。试试这个:
off
断开插座时的事件,以及每次连接时的on
事件
socket.off("toast");
编辑:而不是禁用removeAllListeners:
io.on('connection', function(socket){
socket.on("disconnect", function(){
socket.removeAllListeners("toast");
});
});
真的可以重新连接插座吗?或者你创建了一个新的套接字吗?不,我不是在创建一个新的实例,重新连接确实是可能的。我正在尝试,等等,这项工作与removeAllListeners(“toast”),谢谢!