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);
}
}