Socket.iO comunication between Android app and nodeJS

반응형
320x100
반응형
 
 
 
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

 
 
 
 
 
320x100
반응형

댓글(0)

Designed by JB FACTORY