마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

socket.io 를 이용하여 안드로이드 채팅 구현하려고 하는데 이상한 에러가...ㅠㅠㅠㅠㅠ

0 추천

socket.io 를 이용해서 채팅 앱을 구현하려고 하는데 이벤트 등록에서 자꾸 에러가 나요.

그 이유를 모르겠습니다.

더 신기한건 에러가 나서 앱이 다운되었다가  어떤때는 정상적으로 작동하다가 또 지나면 에러났다가.....원인을 모르겠습니다.  아래 코드인데요.... 고수님들 한번 봐주셨으면 고맙겠습니다.

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    private Socket mSocket;
    private EditText ip_address;
    private Button connect_btn;
    private ListView chat_board;
    private EditText message;
    private Button send;

    private ArrayAdapter<String> adapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ip_address = findViewById(R.id.ip_address);
        connect_btn = findViewById(R.id.connect);
        connect_btn.setOnClickListener(this);
        message = findViewById(R.id.message);
        send = findViewById(R.id.send);
        send.setOnClickListener(this);

        chat_board = findViewById(R.id.chat_board);
        adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, android.R.id.text1);
        chat_board.setAdapter(adapter);

        String ipaddress = "http://192.168.123.159:3030";

        connectToServer(ipaddress);

    }

    public void connectToServer(String ipaddress) {
        try {
            mSocket = IO.socket(ipaddress);
            mSocket.connect();
            mSocket.on(Socket.EVENT_CONNECT, onConnect);  // 여기서 에러가...
            mSocket.on("serverMessage", onMessageReceived);  // 여기서도 에러가...
        } catch (URISyntaxException e) {
            e.printStackTrace();
        }
    }

    @Override
    public void onClick(View v) {

        if (v.getId() == R.id.send) {
            String s_message = message.getText().toString().trim();
            if (s_message.isEmpty()) return;

            Gson gson = new Gson( );
            SendMessage msg = new SendMessage("client01", s_message);
            String jsonString = gson.toJson( msg );

            mSocket.emit("fromClientMessage", jsonString);

            message.setText("");

            return;
        }
    }

    private Emitter.Listener onConnect = new Emitter.Listener() {
        @Override
        public void call(Object... args) {
            adapter.add("connected.....");
        }
    };

    private Emitter.Listener onMessageReceived = new Emitter.Listener() {
        @Override
        public void call(Object... args) {
            JSONObject receivedData = (JSONObject) args[0];
            try {
                String who = receivedData.getString("who");
                String message = receivedData.getString("data");
                adapter.add(who + " : " + message);
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
    };

    @Override
    protected void onDestroy() {
        super.onDestroy();

        mSocket.disconnect();
        mSocket.off("serverMessage", onMessageReceived);
        mSocket.off(Socket.EVENT_CONNECT, onConnect);
    }
}
quantumy (350 포인트) 님이 2019년 6월 28일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...