diff --git a/Test-nodejs/NODEJS-ANDROID/SERVER-zalo/app.js b/Test-nodejs/NODEJS-ANDROID/SERVER-zalo/app.js new file mode 100644 index 00000000..b7734758 --- /dev/null +++ b/Test-nodejs/NODEJS-ANDROID/SERVER-zalo/app.js @@ -0,0 +1,43 @@ +var express = require("express"); +var app = express(); +var server = require("http").createServer(app); +var io = require("socket.io").listen(server); +var fs = require("fs"); +var mangUsername =[]; + +server.listen(process.env.PORT || 3000); +/* +app.get("/", function(req, res){ + res.sendFile(__dirname + "/index.html"); +}); +*/ + +io.sockets.on('connection', function (socket) { + + console.log("Co nguoi connect ne"); + socket.on("client-gui-username", function (data) { + + var kq=false; + + if (mangUsername.indexOf(data) > -1){ + console.log("da ton tai user "+data); + socket.emit("foo","da ton tai"); + }else{ + mangUsername.push(data); + console.log("client vua dang ky:"+data); + kq=true; + // emit toi tat ca moi nguoi + io.sockets.emit('serverguinguoimoi', { nguoimoi: data }); + + } + + // emit tới máy nguoi vừa gửi + socket.emit('kqdangky', { noidung: kq }); + /*console.log(mangUsername);*/ + }); + + + + + +}); diff --git a/Test-nodejs/NODEJS-ANDROID/SERVER-zalo/index.html b/Test-nodejs/NODEJS-ANDROID/SERVER-zalo/index.html new file mode 100644 index 00000000..f3799d3c --- /dev/null +++ b/Test-nodejs/NODEJS-ANDROID/SERVER-zalo/index.html @@ -0,0 +1 @@ +Hi khoapham \ No newline at end of file diff --git a/Test-nodejs/NODEJS-ANDROID/SERVER-zalo/package.json b/Test-nodejs/NODEJS-ANDROID/SERVER-zalo/package.json new file mode 100644 index 00000000..1a3312f7 --- /dev/null +++ b/Test-nodejs/NODEJS-ANDROID/SERVER-zalo/package.json @@ -0,0 +1,10 @@ +{ + "name": "Zalo", + "version": "0.0.1", + "private": "true", + "dependencies": { + "express": "*", + "socket.io": "*", + "socketio-file-upload": "^0.4.4" + } +} \ No newline at end of file diff --git a/Test-nodejs/NODEJS-ANDROID/Zalo-khoapham-MyApplication/Zalo-khoapham-MyApplication.iml b/Test-nodejs/NODEJS-ANDROID/Zalo-khoapham-MyApplication/Zalo-khoapham-MyApplication.iml new file mode 100644 index 00000000..b428d42d --- /dev/null +++ b/Test-nodejs/NODEJS-ANDROID/Zalo-khoapham-MyApplication/Zalo-khoapham-MyApplication.iml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Test-nodejs/NODEJS-ANDROID/Zalo-khoapham-MyApplication/app/app.iml b/Test-nodejs/NODEJS-ANDROID/Zalo-khoapham-MyApplication/app/app.iml new file mode 100644 index 00000000..0e1a531d --- /dev/null +++ b/Test-nodejs/NODEJS-ANDROID/Zalo-khoapham-MyApplication/app/app.iml @@ -0,0 +1,121 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Test-nodejs/NODEJS-ANDROID/Zalo-khoapham-MyApplication/app/build.gradle b/Test-nodejs/NODEJS-ANDROID/Zalo-khoapham-MyApplication/app/build.gradle new file mode 100644 index 00000000..3728f65c --- /dev/null +++ b/Test-nodejs/NODEJS-ANDROID/Zalo-khoapham-MyApplication/app/build.gradle @@ -0,0 +1,30 @@ +apply plugin: 'com.android.application' + +android { + compileSdkVersion 23 + buildToolsVersion "25.0.2" + + defaultConfig { + applicationId "com.netadx.karl.zalo_khoapham_myapplication" + minSdkVersion 14 + targetSdkVersion 23 + versionCode 1 + versionName "1.0" + } + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + } + } +} + +dependencies { + compile fileTree(dir: 'libs', include: ['*.jar']) + testCompile 'junit:junit:4.12' + compile 'com.android.support:appcompat-v7:23.4.0' + compile ('io.socket:socket.io-client:0.8.3') { + // excluding org.json which is provided by Android + exclude group: 'org.json', module: 'json' + } +} diff --git a/Test-nodejs/NODEJS-ANDROID/Zalo-khoapham-MyApplication/app/proguard-rules.pro b/Test-nodejs/NODEJS-ANDROID/Zalo-khoapham-MyApplication/app/proguard-rules.pro new file mode 100644 index 00000000..ef5e2aa1 --- /dev/null +++ b/Test-nodejs/NODEJS-ANDROID/Zalo-khoapham-MyApplication/app/proguard-rules.pro @@ -0,0 +1,17 @@ +# Add project specific ProGuard rules here. +# By default, the flags in this file are appended to flags specified +# in C:\Users\karl\AppData\Local\Android\Sdk/tools/proguard/proguard-android.txt +# You can edit the include path and order by changing the proguardFiles +# directive in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# Add any project specific keep options here: + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} diff --git a/Test-nodejs/NODEJS-ANDROID/Zalo-khoapham-MyApplication/app/src/androidTest/java/com/netadx/karl/zalo_khoapham_myapplication/ApplicationTest.java b/Test-nodejs/NODEJS-ANDROID/Zalo-khoapham-MyApplication/app/src/androidTest/java/com/netadx/karl/zalo_khoapham_myapplication/ApplicationTest.java new file mode 100644 index 00000000..6716b1a7 --- /dev/null +++ b/Test-nodejs/NODEJS-ANDROID/Zalo-khoapham-MyApplication/app/src/androidTest/java/com/netadx/karl/zalo_khoapham_myapplication/ApplicationTest.java @@ -0,0 +1,13 @@ +package com.netadx.karl.zalo_khoapham_myapplication; + +import android.app.Application; +import android.test.ApplicationTestCase; + +/** + * Testing Fundamentals + */ +public class ApplicationTest extends ApplicationTestCase { + public ApplicationTest() { + super(Application.class); + } +} \ No newline at end of file diff --git a/Test-nodejs/NODEJS-ANDROID/Zalo-khoapham-MyApplication/app/src/main/AndroidManifest.xml b/Test-nodejs/NODEJS-ANDROID/Zalo-khoapham-MyApplication/app/src/main/AndroidManifest.xml new file mode 100644 index 00000000..2e30c4ee --- /dev/null +++ b/Test-nodejs/NODEJS-ANDROID/Zalo-khoapham-MyApplication/app/src/main/AndroidManifest.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Test-nodejs/NODEJS-ANDROID/Zalo-khoapham-MyApplication/app/src/main/java/com/netadx/karl/zalo_khoapham_myapplication/MainActivity.java b/Test-nodejs/NODEJS-ANDROID/Zalo-khoapham-MyApplication/app/src/main/java/com/netadx/karl/zalo_khoapham_myapplication/MainActivity.java new file mode 100644 index 00000000..abce25c8 --- /dev/null +++ b/Test-nodejs/NODEJS-ANDROID/Zalo-khoapham-MyApplication/app/src/main/java/com/netadx/karl/zalo_khoapham_myapplication/MainActivity.java @@ -0,0 +1,134 @@ +package com.netadx.karl.zalo_khoapham_myapplication; + +import android.os.Bundle; +import android.support.v7.app.AppCompatActivity; +import android.util.Log; +import android.view.View; +import android.widget.ArrayAdapter; +import android.widget.Button; +import android.widget.EditText; +import android.widget.ListView; +import android.widget.TextView; +import android.widget.Toast; + +import org.json.JSONException; +import org.json.JSONObject; + +import java.net.URISyntaxException; +import java.util.ArrayList; + +import io.socket.client.IO; +import io.socket.client.Socket; +import io.socket.emitter.Emitter; + +public class MainActivity extends AppCompatActivity { + Socket socket; + EditText edtUsername; + Button btnDangky; + TextView txtvThongbao; + final String TAG="SocketService"; + ListView lvUsername; + ArrayAdapter adapter; + + ArrayList mangUsername; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_main); + + try { + socket = IO.socket("http://192.168.1.54:3000"); + } catch (URISyntaxException e) { + e.printStackTrace(); + } + + socket.connect(); + + socket.on("kqdangky", onCallback_dk); + socket.on("serverguinguoimoi", onCallback_nguoimoi); + + + edtUsername = (EditText) findViewById(R.id.editTextUsername); + btnDangky = (Button) findViewById(R.id.buttonDangky); + btnDangky.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + socket.emit("client-gui-username", edtUsername.getText().toString()); + // ack from client to server + + + } + }); + + lvUsername = (ListView) findViewById(R.id.listViewUsername); + mangUsername = new ArrayList(); + mangUsername.add("Teo"); + mangUsername.add("Ti"); + adapter = new ArrayAdapter(getApplicationContext(),android.R.layout.simple_list_item_1, mangUsername); + lvUsername.setAdapter(adapter); + + + + + + } + // onCallback_dk + private Emitter.Listener onCallback_dk = new Emitter.Listener() { + @Override + public void call(final Object... args) { + runOnUiThread(new Runnable() { + @Override + public void run() { + JSONObject data = (JSONObject) args[0]; + + String noidung; + try { + noidung = data.getString("noidung"); + Log.d(TAG, noidung); + if (noidung == "true") { + Toast.makeText(getApplicationContext(), "Complete " + noidung, Toast.LENGTH_SHORT).show(); + }else{ + Toast.makeText(getApplicationContext(), "Fail " + noidung, Toast.LENGTH_SHORT).show(); + } + + } catch (JSONException e) { + return; + } + } + }); + + } + }; + //END onCallback_dk + + //onCallback_nguoimoi + private Emitter.Listener onCallback_nguoimoi = new Emitter.Listener() { + @Override + public void call(final Object... args) { + runOnUiThread(new Runnable() { + @Override + public void run() { + JSONObject data = (JSONObject) args[0]; + + String noidung; + try { + noidung = data.getString("nguoimoi"); + Log.d(TAG, noidung); + Toast.makeText(getApplicationContext(), "nguoimoi " + noidung, Toast.LENGTH_SHORT).show(); + addItems(noidung); + } catch (JSONException e) { + return; + } + } + }); + + } + }; + //END onCallback_nguoimoi + //METHOD WHICH WILL HANDLE DYNAMIC INSERTION + public void addItems(String nguoimoi) { + adapter.insert(nguoimoi,0); + } + //END METHOD WHICH WILL HANDLE DYNAMIC INSERTION +} diff --git a/Test-nodejs/NODEJS-ANDROID/Zalo-khoapham-MyApplication/app/src/main/res/layout/activity_main.xml b/Test-nodejs/NODEJS-ANDROID/Zalo-khoapham-MyApplication/app/src/main/res/layout/activity_main.xml new file mode 100644 index 00000000..6d861474 --- /dev/null +++ b/Test-nodejs/NODEJS-ANDROID/Zalo-khoapham-MyApplication/app/src/main/res/layout/activity_main.xml @@ -0,0 +1,37 @@ + + + +