Socket.iO comunication between Android app and nodeJS

반응형
728x90
반응형
 
 
 
Introduction

지난 iOS 및 nodeJS 통신에 이어 Android client와 nodeJS 서버와의 통신에 대해 알아보도록 하겠습니다. 간단하니깐 쉽게 쉽게 따라합시다.!! 안드로이드는 java로만 개발을 해왔기때문에 본 블로그에서는 코틀린(kt)의 경우 코드 수정이라기보다 테스트용으로만 확인하였습니다. 그래서 코드는 전체 다 올리도록 할테니, 필요에 따라 수정하여 사용하시기 바랍니다. 
 
 
activity_main.xml

 
레이아웃은 상위 그림과 같습니다. 그리고 레이아웃 코드까지는 필요을것 같아 제외하도록 하겠습니다. 그리고 가장 중요한 안드로이드 기기 권한 설정을 추가해주시기 바랍니다. 
 
AndroidManifest.xml
<uses-permission android:name="android.permission.INTERNET"/>
 
 
그리고 socket.io를 추가하기위해 아래와 같이 추가 하시면 됩니다. 
 
build.gradle(Module: app)
    // 생략 ...

dependencies {
    ext.anko_version='0.10.8'
    implementation "org.jetbrains.anko:anko:$anko_version"


    implementation('io.socket:socket.io-client:1.0.0') {
        exclude group: 'org.json', module: 'json'
    }

    implementation fileTree(dir: "libs", include: ["*.jar"])
    implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
    implementation 'androidx.core:core-ktx:1.1.0'
    implementation 'androidx.appcompat:appcompat:1.1.0'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test.ext:junit:1.1.1'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
}
 

 

 

 
그리고 안드로이드에서 socket.io를 이용하여 생성 후, IP, PORT를 작성하고 connect 를 수행하시면 됩니다. 그럼 서버에 접속한 결과가 보이게 되죠. 
 
MainActivity.kt
// 생략 ...

class MainActivity : AppCompatActivity() {

    val Tag = "MainActivity"
    lateinit var mSocket: Socket
    lateinit var username: String
    var users: Array<String> = arrayOf()

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        try {
            mSocket = IO.socket("http://127.0.0.1:3014")
            mSocket.connect()
            Log.d("test", "socket.io connected !!");
        } catch (e: URISyntaxException) {
            Log.e("MainActivity", e.reason)
        }

        username = "testName";
        mSocket.on(Socket.EVENT_CONNECT, onConnect);
        mSocket.on("newUser", onNewUser)
        mSocket.on("myMsg", onMyMessage)
        mSocket.on("newMsg", onNewMessage)
        mSocket.on("logout", onLogout)

       // 생략 ...
    }

    val onConnect: Emitter.Listener = Emitter.Listener {
        mSocket.emit("login", username)
        Log.d(Tag, "Socket is connected with ${username}")
    }

   // 생략 ...

}
 
전체적인 소스코드는 아래 Reference 를 참조해주시기 바랍니다. 
 
 
결과화면

 
App은 Layout화면과 같이 출력 됩니다. 그럼 서버에는 어떻게 나올까요?
 
 
접속된것 확인하였습니다. 이제 조금씩 수정하여 최종 App을 만들고나서 다시 포스팅 하도록 하겠습니다. 
 
 
 
Reference

 
 
 
 
 
728x90
반응형

'Develop > Android' 카테고리의 다른 글

Android VT-x disabled in BIOS 해결하기  (0) 2020.12.19
[java] ArrayList 안에 ArrayList 사용하자  (0) 2020.06.10

댓글

Designed by JB FACTORY