慕尼黑5688855
2021-10-20 15:57:24
我試圖找出一種使用Node作為客戶端的方法,它將數據發送到偵聽 Android 應用程序的服務器。android 應用程序最初將使用其公共 IP 地址和它將偵聽的端口(套接字)向 Node 服務器發送一個 post 請求。一旦有任何新內容,Node 服務器就會通過注冊的套接字向該特定應用程序發送一個 JSON 數據包。這在 Node 中是可能的,如果不是,我如何在 Javascript 中實現它,或者實現它的最佳方法是什么?這是Android應用服務器public class AndroidAppLocalServer { Activity activity; ServerSocket serverSocket; String message = ""; static final int socketServerPORT = 8080; public AndroidAppLocalServer(Activity activity) { this.activity = activity; Thread socketServerThread = new Thread(new SocketServerThread()); socketServerThread.start(); } public int getPort() { return socketServerPORT; } public void onDestroy() { if (serverSocket != null) { try { serverSocket.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
1 回答

一只甜甜圈
TA貢獻1836條經驗 獲得超5個贊
是的,您可以在 Node.js 中執行此操作,假設該應用程序在實際可公開訪問的手機上運行。由于您在 Android 應用程序中使用的是普通 TCP 套接字,因此您可以先通過使用諸如netcat或 之類的工具手動連接套接字來進行驗證telnet(例如,netcat <PUBLIC-IP> 8080)。
如果這可行,您可以使用net.Socket該類在 Node.js 中執行相同的操作。
const net = require('net');
const client = new net.Socket();
client.connect(8080, '<PUBLIC-IP>', () => {
// callback, when connection successfull
client.write('Data sent to the App');
});
client.on('data', (data) => {
// callback, when app replies with data
});
client.on('close', (data) => {
// callback, when socket is closed
});
但是,根據您實際嘗試實現的目標,您可能需要查看 Android 應用程序通常如何實現推送通知。
添加回答
舉報
0/150
提交
取消