안녕하세요 소켓연동을 구현을 했는
try {
mSocket = IO.socket("http://10.0.2.2:3000")
mSocket.connect()
mSocket.emit("setting", token)
Log.d(TAG, "onCreate: 소켓연결 성공")
//서버에 신호 보내는거같음 밑에 에밋 리스너들 실행
//socket.on은 수신
mSocket.on("sendMessage", sendMessage)
val json = JSONObject()
json.put("token", token)
mSocket.emit("connects ", json)
val userId = JSONObject()
userId.put("token", token)
userId.put("roomId", args.groupId)
//socket.emit은 메세지 전송임
mSocket.emit("join", userId)
} catch (e: JSONException) {
Log.d(TAG, "onCreate: 에러 ${e}")
e.printStackTrace()
}
hasConnection = true
chat_Send_Button.setOnClickListener {
//아이템 추가 부분
sendMessage()
}
}
private fun getToken() {
signViewModel.readToken.asLiveData().observe(this) {
token = it.token
}
}
private fun setAdapter() {
binding.studyMeetingRecyclerView.apply {
adapter = mAdapter
showVertical(context)
}
}
private var sendMessage: Emitter.Listener = Emitter.Listener { args ->
runOnUiThread {
Log.e("socket", "sendMessage return : $${args[0]}")
val data = args[0] as JSONObject
val name: String
val message: String
val profile_image: String
try {
Log.e("socket", "sendMessage return : $data")
name = data.getString("name")
message = data.getString("message")
profile_image = data.getString("profileImg")
val format = ChatModel(name, message, profile_image, "null")
mAdapter.addItem(format)
mAdapter.notifyDataSetChanged()
Log.e("new me", name)
} catch (e: Exception) {
Log.d(TAG, "onNewMessage: 에러 ${e} ")
return@runOnUiThread
}
}
}
// send button 을 누르면 server 에 있는 sendMessage 가 호출된다.
private fun sendMessage() {
val message = binding.messageEdit.text.toString().trim { it <= ' ' }
if (TextUtils.isEmpty(message)) {
return
}
binding.messageEdit.setText("")
val jsonObject = JSONObject()
try {
Log.d(
TAG,
"sendMessage: message ${message} groupId : ${args.groupId} token : ${token}"
)
jsonObject.put("token", token)
jsonObject.put("roomId", args.groupId)
jsonObject.put("message", message)
mSocket.emit("sendMessage", jsonObject)
} catch (e: JSONException) {
Log.d(TAG, "sendMessage: 에러 ${e}")
e.printStackTrace()
}
Log.d("socket", "sendMessage : object $jsonObject")
}
override fun onDestroy() {
super.onDestroy()
mSocket.disconnect()
}
데 서버에 로그를 찍어봐도 데이터가 안넘어가고 연동이 안되는 것 같습니다.
에러도 안뜨고 뭐가 문제인지 모르겠어요 ㅠㅠ