Ứng dụng chat peer-to-peer (P2P) qua mạng LAN với tính năng mã hóa AES Cipher, được xây dựng bằng React Native.
-
Framework: React Native 0.81.4
-
Language: TypeScript 5.8.3
-
UI Library: React 19.1.0
-
Networking:
react-native-tcp-socket- TCP communication@react-native-community/netinfo- Network detectionreact-native-nitro-soundGhi và phát lại âm thanh.react-native-fsQuản lý file (lưu file audio tạm thời).react-native-image-pickerChọn và chuyển đổi hình ảnh.@react-native-community/netinfoLấy địa chỉ IP cục bộ.
-
Build Tools:
- Metro Bundler
- Gradle (Android)
- Xcode (iOS)
Ứng dụng sử dụng AES Cipher - một phương pháp mã hóa đối xứng:
- Hoạt động bằng cách chia dữ liệu thành các khối có kích thước cố định là 256 bit, sau đó áp dụng một chuỗi các phép biến đổi được lặp lại qua nhiều vòng.
- Cùng một khóa bí mật (Secret Key) được sử dụng cho cả quá trình mã hóa (Encryption) và giải mã (Decryption).
- Node.js: >= 20.x (như trong
package.json) - npm hoặc yarn: Để quản lý dependencies
- Git: Để clone và version control
- Android Studio: Godzilla (2024) hoặc mới hơn
- JDK: 17 hoặc 21
- Android SDK:
- Build Tools version 35.0.0
- Platform: Android 15 (API 35)
- NDK (nếu cần native modules)
- Gradle: 8.10.2
- Android Gradle Plugin: 8.7.3
- macOS: Ventura (13.0) hoặc mới hơn
- Xcode: 14.0+
- CocoaPods: Để quản lý iOS dependencies
- iOS Deployment Target: 13.4+
- Android: API 21+ (Android 5.0+)
- iOS: iOS 13.4+
- Network: Cả 2 thiết bị phải cùng mạng WiFi/LAN
git clone https://github.com/dangvinh29/ChatNETproject.git
cd ChatNET# Sử dụng npm
npm install
# Hoặc yarn
yarn installcd ios
pod install
cd ..Đảm bảo file android/local.properties có đường dẫn SDK. Nếu chưa có file android/local.properties thì có thể tạo thêm:
sdk.dir=C\:\\Users\\YourUsername\\AppData\\Local\\Android\\sdknpm install react-native-fs Mở terminal/command prompt và chạy:
npm start
# Hoặc
npx react-native startMở terminal mới (giữ Metro chạy) và thực thi:
# Chạy trên emulator hoặc thiết bị đã kết nối
npm run android
# Hoặc dùng React Native CLI trực tiếp
npx react-native run-androidLưu ý:
- Đảm bảo USB Debugging đã bật trên thiết bị Android
- Kiểm tra thiết bị đã kết nối:
adb devices - Nếu có nhiều thiết bị, chỉ định device:
adb -s <device_id> install app.apk
npm start# Chạy trên iOS simulator mặc định
npm run ios
# Chạy trên iPhone 15 Pro simulator
npx react-native run-ios --simulator="iPhone 15 Pro"
# Chạy trên thiết bị thật (cần Apple Developer Account)
npx react-native run-ios --device# Build debug APK
npm run build:apk
# Hoặc thủ công
cd android
./gradlew assembleDebug
cd ..
# File APK: android/app/build/outputs/apk/debug/app-debug.apk# Build release APK đã ký
npm run build:release
# File APK: android/app/build/outputs/apk/release/app-release.apkCấu hình signing (trong android/app/build.gradle):
signingConfigs {
release {
storeFile file('my-release-key.keystore')
storePassword 'your-store-password'
keyAlias 'my-key-alias'
keyPassword 'your-key-password'
}
}# Cài debug APK
npm run install:apk
# Cài release APK
npm run install:release
# Hoặc thủ công với adb
adb install -r path/to/app.apk- Mở ứng dụng trên cả 2 thiết bị
- Nhấn vào icon ⚙️ (Settings) góc phải trên cùng
Thiết bị A:
- Xem "📱 Địa chỉ IP của bạn" (ví dụ:
192.168.1.100) - Nhập IP của thiết bị B vào "🌐 IP người nhận"
- Cấu hình mã hóa (nếu cần):
- Bật/tắt "🔐 Chế độ mã hóa"
- Nhập "🔑 Key mã hóa" (1-25, ví dụ:
khongc0matkhau)
Thiết bị B:
- Xem IP của mình
- Nhập IP của thiết bị A vào "IP người nhận"
- Quan trọng: Sử dụng cùng key mã hóa với thiết bị A
- Nhập tin nhắn vào ô input phía dưới
- Nhấn nút gửi (icon ✉️)
- Tin nhắn sẽ được mã hóa (nếu bật) và gửi qua TCP socket
- Đối với ảnh, nhấn vào icon máy ảnh bên trái khung nhập chat để chọn ảnh từ thư viện trong máy.
- Đối với audio, nhấn vào icon micro bên cạnh máy ảnh để ghi âm cuộc thoại.
⭐ Nếu thấy hữu ích, hãy star repository này!