SocketIO Android未发出连接事件

SocketIO Android未发出连接事件,android,node.js,sockets,socket.io,Android,Node.js,Sockets,Socket.io,我正在使用和NodeJS // on my Android activity private Socket mSocket; { try { mSocket = IO.socket("http://IP_OF_MY_SERVER"); } catch (URISyntaxException e) {} } @Override protected void onCreate(Bundle sa

我正在使用和NodeJS

    // on my Android activity
    private Socket mSocket;
    {
        try {
            mSocket = IO.socket("http://IP_OF_MY_SERVER");
        } catch (URISyntaxException e) {}
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mSocket.connect();
    }

我遵循官方指南,但仍
mSocket.connect()
未发出
connection
事件,并且在启动活动时,控制台上没有
用户连接

你能告诉我我遗漏了什么,我如何调试它吗


编辑

我的Ubuntu服务器上的NodeJS应用程序:

Android活动:


编辑2

我已按建议更改了代码:

这一次我在启动活动时遇到了这个错误

myapp正在侦听

几点关键注意事项:

  • 创建一个
    套接字
    对象:

    private Socket mSocket;
    {
        try {
            mSocket = IO.socket(CHAT_SERVER_URL); // Your server's URL
        }
        catch (URISyntaxException e) {
            throw new RuntimeException(e);
        }
    }
    
  • onCreate()
    :连接并设置套接字错误listener

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    
        mSocket.on(Socket.EVENT_CONNECT_ERROR, onConnectError);
        mSocket.on(Socket.EVENT_CONNECT_TIMEOUT, onConnectError);
        mSocket.connect();
    }
    
    
    private Emitter.Listener onConnectError = new Emitter.Listener() {
        @Override
        public void call(Object... args) {
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    Toast.makeText(getApplicationContext(), "Unable to connect to NodeJS server", Toast.LENGTH_LONG).show();
                }
            });
        }
    };
    
  • 断开
    ondestory()方法中的套接字

    @Override
    protected void onDestroy() {
        super.onDestroy();
    
        mSocket.disconnect();
        mSocket.off(Socket.EVENT_CONNECT_ERROR, onConnectError);
        mSocket.off(Socket.EVENT_CONNECT_TIMEOUT, onConnectError);
    }
    
  • 没有得到错误吐司是正确设置的第一个里程碑

  • 创建一个WLAN
  • (以管理员权限打开命令行,运行以下命令:)

    netsh wlan set hostednetwork mode=allow ssid=NodeSocket key=1234ok

    netsh wlan启动主机网络

    确保您的Android设备已连接到此网络,并且您的
    Node.js
    服务器已启动并正在运行。

    一些关键注意事项:

  • 创建一个
    套接字
    对象:

    private Socket mSocket;
    {
        try {
            mSocket = IO.socket(CHAT_SERVER_URL); // Your server's URL
        }
        catch (URISyntaxException e) {
            throw new RuntimeException(e);
        }
    }
    
  • onCreate()
    :连接并设置套接字错误listener

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    
        mSocket.on(Socket.EVENT_CONNECT_ERROR, onConnectError);
        mSocket.on(Socket.EVENT_CONNECT_TIMEOUT, onConnectError);
        mSocket.connect();
    }
    
    
    private Emitter.Listener onConnectError = new Emitter.Listener() {
        @Override
        public void call(Object... args) {
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    Toast.makeText(getApplicationContext(), "Unable to connect to NodeJS server", Toast.LENGTH_LONG).show();
                }
            });
        }
    };
    
  • 断开
    ondestory()方法中的套接字

    @Override
    protected void onDestroy() {
        super.onDestroy();
    
        mSocket.disconnect();
        mSocket.off(Socket.EVENT_CONNECT_ERROR, onConnectError);
        mSocket.off(Socket.EVENT_CONNECT_TIMEOUT, onConnectError);
    }
    
  • 没有得到错误吐司是正确设置的第一个里程碑

  • 创建一个WLAN
  • (以管理员权限打开命令行,运行以下命令:)

    netsh wlan set hostednetwork mode=allow ssid=NodeSocket key=1234ok

    netsh wlan启动主机网络


    确保您的Android设备已连接到此网络,并且您的
    Node.js
    服务器已启动并正在运行。

    首先,您应该建立与Node.js服务器的连接。你有没有收到“无法连接到服务器”的祝酒词?(比如,每2秒一次)@Sparta没有,我没有收到祝酒词。我正在调试Android应用程序,mSocket变量已设置。您是否创建并运行了本地Node.js服务器?是的,我正在使用服务器上的
    Node api.js
    命令运行脚本。在调用
    res.end(data)后删除对
    next()
    的调用首先,您应该建立到Node.js服务器的连接。你有没有收到“无法连接到服务器”的祝酒词?(比如,每2秒一次)@Sparta没有,我没有收到祝酒词。我正在调试Android应用程序,mSocket变量已设置。您是否创建并运行了本地Node.js服务器?是的,我正在使用服务器上的
    Node api.js
    命令运行脚本。在调用
    res.end(data)后删除对
    next()
    的调用无法连接到NodeJS服务器这是一个开始。。您需要提供更多的代码和配置信息。请确保已将INTERNET权限添加到清单中。我的服务器是Ubuntu,因此我没有
    netsh
    命令。我现在正在编辑我的问题,以提供完整的代码。刚刚通过您的帮助解决了问题。我会在一小时后写答案。非常感谢。无法连接到NodeJS服务器这是一个开始。。您需要提供更多的代码和配置信息。请确保已将INTERNET权限添加到清单中。我的服务器是Ubuntu,因此我没有
    netsh
    命令。我现在正在编辑我的问题,以提供完整的代码。刚刚通过您的帮助解决了问题。我会在一小时后写答案。非常感谢你。