首页 > 解决方案 > Socket IO 监听器在 Android 中不起作用

问题描述

我正在处理 Android TV 的通知。我已经使用 Socket IO 服务器连接实现了它。我已经使用 java.net.Socket 与 Socket Server 建立了连接,但我无法收听服务器发送的消息。

 @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_listen_socket_message);
    new AsyncAction().execute();
}


private class AsyncAction extends AsyncTask<String, Void, String> {
    protected String doInBackground(String... args) {
        try {
            InetAddress serverAddr = InetAddress.getByName("xx.xx.xxx.xxx");
            clientSocket = new Socket(serverAddr, 8000);
        } catch (UnknownHostException e1) {
            e1.printStackTrace();

            Log.d("Exception_UnknownHost", e1.getMessage());
        } catch (IOException e1) {
            e1.printStackTrace();
            Log.d("Exception_socket", e1.getMessage());
        }

        return null;//returns what you want to pass to the onPostExecute()
    }

    protected void onPostExecute(String result) {
        //resultis the data returned from doInbackground
        if (clientSocket.isConnected()) {
            setListener();
            Toast.makeText(SocketConnectionActivity.this, "Connected!!", Toast.LENGTH_LONG).show();
        } else {
            Toast.makeText(SocketConnectionActivity.this, "Not Connected!!", Toast.LENGTH_LONG).show();
        }
    }
}

private void setListener() {

    // TODO Auto-generated method stub
    new Thread() {
        @Override
        public void run() {
            try {
                BufferedReader br = new BufferedReader(
                        new InputStreamReader(clientSocket.getInputStream()));
                String line = br.readLine();
                Log.d("SocketConnection",line);
                br.close();
            } catch (UnknownHostException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }.start();
}

标签: websocketsocket.ioandroid-tvsocketserver

解决方案


此代码中的服务器套接字在哪里?您正在创建一个客户端套接字并使用同一个客户端套接字进行侦听。


推荐阅读