반응형
Notice
Recent Posts
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Flavors
- JNI
- firebase-storage
- ActivityResult-API
- mosquitto
- Android
- NoSuchMethodError
- git
- Java8
- AWS
- socket-client
- OZViewer
- Firebase
- TIZEN
- socket-server
- mqtt
- Dva
- firebase-database
- Kotlin
- google-login
- BottomSheetDialog
- gradle
- git-push
- 오즈뷰어
- socket.io
- cloud-firestore
- Galaxy Watch
- 워치
- ozd
- hung-up
Archives
- Today
- Total
Hyeyeon blog
[Android] Socket.io를 이용하여 소켓 서버와 안드로이드 앱 통신하기 본문
반응형
Android의 Socket.io 라이브러리를 사용하여 앱과 소켓 서버 간의 통신을 구현합니다.
Socket.io 라이브러리와 관련된 내용은 Android Socket.io Github에서 확인할 수 있습니다.
1. dependency 추가
build.gradle(module)에 io.socket 의존성을 추가합니다.
exclude 구문을 넣지 않으면 특정 버전에서 json 패키지가 제외되었다는 warning 메세지가 발생합니다.
dependency {
implementation ('io.socket:socket.io-client:1.0.1') {
exclude group: 'org.json', module: 'json'
}
}
2. 소켓 연결하기
Socket.on()을 사용하여 소켓 통신을 처리합니다.
// 소켓 서버 연결
val socket = IO.socket(SERVER_URL)
socket.connect()
socket.on(io.socket.client.Socket.EVENT_CONNECT) {
// 소켓 서버에 연결이 성공하면 호출됩니다.
Log.i("Socket", "Connect")
}.on(io.socket.client.Socket.EVENT_DISCONNECT) { args ->
// 소켓 서버 연결이 끊어질 경우에 호출됩니다.
Log.i("Socket", "Disconnet: ${args[0]}")
}.on(EVENT_CONNECT_ERROR) { args ->
// 소켓 서버 연결 시 오류가 발생할 경우에 호출됩니다.
val errorMessage = ""
if (args[0] is EngineIOException) {
errorMessage = "code: ${err.code} message: ${err.message}"
}
Log.i("Socket", "Connect Error: $errorMessage")
}
3. 소켓 서버에 데이터 보내기
Socket.emit()을 사용하여 데이터를 전달합니다.
// "message"는 소켓 서버에 전달할 Event 명 입니다.
val data = "Hello World"
socket?.emit("message", data)
4. 전체 소스코드
class MainActivity : AppCompatActivity(){
val SERVER_URL = "http://xxx.xxx.xxx.xxx:3000"
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// 소켓 서버 연결
val socket = IO.socket(SERVER_URL)
socket.connect()
socket.on(io.socket.client.Socket.EVENT_CONNECT) {
// 소켓 서버에 연결이 성공하면 호출됩니다.
Log.i("Socket", "Connect")
}.on(io.socket.client.Socket.EVENT_DISCONNECT) { args ->
// 소켓 서버 연결이 끊어질 경우에 호출됩니다.
Log.i("Socket", "Disconnet: ${args[0]}")
}.on(EVENT_CONNECT_ERROR) { args ->
// 소켓 서버 연결 시 오류가 발생할 경우에 호출됩니다.
val errorMessage = ""
if (args[0] is EngineIOException) {
errorMessage = "code: ${err.code} message: ${err.message}"
}
Log.i("Socket", "Connect Error: $errorMessage")
}
// 데이터 전송
// "message"는 소켓 서버에 전달할 Event 명 입니다.
val data = "Hello World"
socket?.emit("message", data)
}
}
연결되는 글
728x90
'개발 > Android' 카테고리의 다른 글
[Android] JNI에서 사용되는 문법 정리 (0) | 2021.02.01 |
---|---|
[Android] JNI를 이용해 안드로이드에서 c파일 사용하기 (0) | 2021.02.01 |
[Android] onActivityResult를 대체하는 ActivityResult API (0) | 2020.12.07 |
[Android] 화면 잠금 상태 여부 가져오기 (0) | 2020.11.30 |
[Android] Api key를 노출시키지 않고 안전하게 사용하는 방법 (0) | 2020.11.29 |
Comments