[Android] Node.js Socket.io 통신 - 2
by JungWook_삽질은 오래했는데 사실 엄청 간단하게 구현이 됐습니다.
https://socket.io/blog/native-socket-io-and-android/
Socket.IO — Native Socket.IO and Android
In this tutorial well learn how to create a chat client that communicates with a Socket.IO Node.JS chat server, with our native Android Client! If you want to jump straight to the code, its on GitHub
socket.io
먼저 build.gradle에 다음 코드를 추가합니다.
// app/build.gradle dependencies { ... implementation 'com.github.nkzawa:socket.io-client:0.6.0' }
그리고 AndroidManifest.xml에 인터넷 퍼미션을 추가합니다.
<!-- app/AndroidManifest.xml --> <manifest xmlns:android="http://schemas.android.com/apk/res/android"> <uses-permission android:name="android.permission.INTERNET" /> ... </manifest>
그 다음 중요한게 정확히 몇버전인지는 모르겠지만
compileSdkVersion 27 minSdkVersion 16 targetSdkVersion 27
안드로이드 버전을 저렇게 맞춰줍니다. 계속 안되다가 버전을 수정하니까 됩니다... 이거때문에 시간을 얼마나 날렸는지...
MainActivity.java
package com.example.socketio; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; import com.github.nkzawa.socketio.client.IO; import com.github.nkzawa.socketio.client.Socket; import com.github.nkzawa.emitter.Emitter; import java.net.URISyntaxException; public class MainActivity extends AppCompatActivity { private Socket socket; { try { socket = IO.socket("서버 url"); } catch (URISyntaxException e) { e.printStackTrace(); } } Button btn; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); socket.on("msg", onMessage); socket.connect(); btn = (Button)findViewById(R.id.sendBtn); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { socket.emit("msg", "hi"); Log.e("send", "data"); } }); } private Emitter.Listener onMessage = new Emitter.Listener() { @Override public void call(Object... args) { runOnUiThread(new Runnable() { @Override public void run() { String data = (String) args[0]; Log.e("get", data); } }); } }; }
최대한 필요한 부분만 넣어봤습니다. 버튼을 누르면 서버로 hi라는 메시지를 보냅니다. 서버에서 메시지가 오면 로그로 출력합니다. 레이아웃은 너무 간단해서 스킵합니다.

블로그의 정보
hongmono
JungWook_