从Android应用程序Sails socket.io

时间:2015-10-29 14:53:05

标签: android node.js socket.io sails.js socket.io-1.0

我使用sails v0.11.2并尝试使用https://github.com/socketio/socket.io-client-java

连接到网络套接字

我的问题是当我从我的服务器注销时(我使用passport.js)正确触发了disconnect事件,但是在此事件追加后我无法重新连接。

这是我的代码:

socket = IO.socket(Constants.LOCAL_URL + "?__sails_io_sdk_version=0.11.0");
socket.io().on(Manager.EVENT_TRANSPORT, new Emitter.Listener()
            {
                @Override
                public void call(Object... args)
                {
                    Transport transport = (Transport) args[0];

                    transport.on(Transport.EVENT_REQUEST_HEADERS, new Emitter.Listener()
                    {
                        @Override
                        public void call(Object... args)
                        {
                            @SuppressWarnings("unchecked")
                            Map<String, List<String>> headers = (Map<String, List<String>>) args[0];
                            // modify request headers
                            headers.put("Cookie", Arrays.asList(COOKIE));
                        }
                    });
                }
            });
            socket.on(Socket.EVENT_ERROR, new Emitter.Listener()
            {

                @Override
                public void call(Object... args)
                {
                    if (listener != null)
                    {
                        listener.onError();
                    }
                    Log.e("test", "ERROR");
                }

            }).on(Socket.EVENT_CONNECT, new Emitter.Listener()
            {
                @Override
                public void call(Object... args)
                {
                    listener.onConnect();
                }
            }).on(Socket.EVENT_DISCONNECT, new Emitter.Listener()
            {
                @Override
                public void call(Object... args)
                {
                    listener.onDisconnect();
                }
            }).on(Socket.EVENT_CONNECT_ERROR, new Emitter.Listener()
            {
                @Override
                public void call(Object... args)
                {
                    if (listener != null)
                    {
                        listener.onConnectError();
                    }
                }
            }).on(Socket.EVENT_CONNECT_TIMEOUT, new Emitter.Listener()
            {
                @Override
                public void call(Object... args)
                {
                    if (listener != null)
                    {
                        listener.onConnectError();
                    }
                }
            }).on(Socket.EVENT_RECONNECT_ERROR, new Emitter.Listener()
            {
                @Override
                public void call(Object... args)
                {
                    if (listener != null)
                    {
                        listener.onConnectError();
                    }
                }
            }).on(Socket.EVENT_RECONNECT_FAILED, new Emitter.Listener()
            {
                @Override
                public void call(Object... args)
                {
                    if (listener != null)
                    {
                        listener.onConnectError();
                    }
                }
            });
            socket.connect();

当我在断开连接事件后尝试重新连接时,这是我的倾听者:

SocketIOManager.SocketConnexionListener socketConnexionListener = new SocketIOManager.SocketConnexionListener()
    {

        @Override
        public void onConnect()
        {
            Log.e("test", "CONNECT");
        }

        @Override
        public void onError()
        {
            Log.e("test", "ERROR");
        }

        @Override
        public void onDisconnect()
        {
            createSocket();//Call the code above to create a new socket or call socket.connect(); but it's not working and no error throw...
            Log.e("test", "DISCON");
        }

        @Override
        public void onConnectError()
        {
            Log.e("test", "CONNECT ERROR");

        }
    };

0 个答案:

没有答案