socket.io 를 이용한 채팅 만들기 2022 2차
vs code 에서 chat-example 을 열었다.
1차에 있는 nodejs 소스를 적당히 수정해 보도록 한다.
원본 소스는 아래에 있다.
https://gist.github.com/joyceHong0524/9f7c1d043e18aab20383ff051c9364f2#file-index-js
그냥 full source github 주소를 링크하기로 한다.
내가 만든 수정 소스 링크 이다.
wkyoon/chat-example-ex-login-room (github.com)
안드로이드 어플을 하나 만든다.
socket.io client 를 만들기 위해서 implement 를 추가해야 하는데
이것도 버전이 2022년 기준으로 확인해 보면
socket.io server version 에 따라 설치하는 것이 달라 지기 때문에 확인해 보았다.
https://socketio.github.io/socket.io-client-java/installation.html
gradle 에 추가한다.
android manifest 에 인터넷을 추가한다.
<uses-permission android:name="android.permission.INTERNET" />
원래 소스를 확인해 보니 activity 이동으로 만든 소스이다.
이건 요즘 좀 그렇다. ( 내기준임) 지금은 activity 이동하는 형태로 안 만든다.
android studio setting 이 default 가 viewbinding 이다.
그래서 viewbinding 이 되도록 구성해 보기로 한다.
일이 커진다.
기존 소스의 github 주소
https://github.com/joyceHong0524/socket.io_android
필요한 부분만 가져와서 적용하기로 한다.
기존 소스 확인 한 결과 이 걸 그냥 사용할수는 없을것 같다.
activity to activity 로 동작하면 된다고 하시는 분은 그냥 기존 소스를 그대로 사용하시면 된다.
일단 소스가 좀 시간이 지난 소스이니깐 recyclerview 를 현재 마지막 버전으로 적용한다.
https://developer.android.com/jetpack/androidx/releases/recyclerview#version_120_3
채팅의 대화리스트를 recyclerview 로 구현하고 그에 해당하는 chatroomadapter를 그대로 가져와서 사용한다.
Models.kt 에 있는 data class 3개는 파일 3개로 분리한다.
view binding 이 적용된 예제기이 때문에 이전에 있는 view를 사용하는 adapter 에서
binding 을 적용한 adapter 로 변경하기로 한다.
https://cliearl.github.io/posts/android/viewbinding-recyclerview/
짜증난다.
binding 적용할려고 하니 single binding 이 아니고 multi binding 을 적용해야 한다.
chatting type 에 따라 viewtype 이 다르기 때문에 view 를 다르게 표현하기 위해서
viewbinding item 이 변경되어야 하는 이슈가 있다.
일단 모르겠으니
recyclerview 를 적용하는 것 부터 확인하고
그리고, binding 을 적용하는 것을 확인하고
마지막으로 multi view binding 을 하도록 하겠다.
( databinding 까지 하면 좋겠지만 일단 view binding 하고 adapter 에 view binding 적용하는것 부터 찾아보기로 한다.)
댓글
댓글 쓰기