2016-11-10 67 views
0

我有一个Android应用程序,它连接到一个套接字,并在onCreate方法上发出connectionData事件。我如何知道Android应用程序重新连接到Socket.io?

// connect to socket 
private Socket socket; 
{ 
    try { 
     socket = IO.socket(AppConfig.URL_SOCKET_IO); 
    } catch (URISyntaxException e) { 
     Log.e(LOG_TAG, "error"); 
    } 
} 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // emit connect and connection data socket 
    socket.connect(); 
    socket.emit("connectionData", currPlayer.getPlayerID()); 
} 

在服务器端,有activeSockets HashMap中存储<connectionData, socket>数据。当应用程序中的互联网连接丢失时,服务器捕获disconnect事件并从HashMap中删除套接字。当应用程序重新连接到互联网时,它也会连接到套接字,但该应用程序不会再发出connectionData,因为它只会在创建活动时发生。

如何检测应用程序是否重新连接到客户端的套接字,以便我可以再次发出connectionData

回答

1

添加事件侦听:

socket.on(Socket.EVENT_CONNECT, new Emitter.Listener() { 
    @Override 
    public void call(final Object... args) { 
     socket.emit("connectionData", currPlayer.getPlayerID()); 
    } 
}); 

其他事件的列表,请参阅this Q&A

相关问题