[Android] Node.js Socket.io 통신 - 2
by JungWook_삽질은 오래했는데 사실 엄청 간단하게 구현이 됐습니다.
https://socket.io/blog/native-socket-io-and-android/
먼저 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라는 메시지를 보냅니다. 서버에서 메시지가 오면 로그로 출력합니다. 레이아웃은 너무 간단해서 스킵합니다.
'Programming > Android' 카테고리의 다른 글
[Android] Timer update TextView (0) | 2019.11.28 |
---|---|
[Android] Keep the device awake (0) | 2019.11.28 |
[Android] Node.js Socket.io 통신 - 1 (0) | 2019.05.13 |
[Android] webview err_cleartext_not_permitted (0) | 2019.05.02 |
[Android] Bluetooth Low Energy 삽질일기 - 2 (0) | 2019.04.10 |
블로그의 정보
hongmono
JungWook_