В настоящее время я работаю над проектом по подключению устройств Android к веб-клиенту через Node.js и WebSocket, Tango ADB. Я могу составить список подключенных устройств с помощью AdbServerClient и получить идентификатор транспорта определенного устройства. Теперь я хочу отправить этот идентификатор транспорта с сервера клиенту через WebSocket, чтобы клиент мог использовать его для установления соединения ADB с устройством. Идентификатор транспорта — это тип данных bigint, поэтому возникает ошибка TypeError: Не знаю, как сериализовать BigInt, в нем отсутствует буква n. Как передать его клиенту? Если есть возможность, можно ли создать adb в клиенте? Пожалуйста!! помогите мне!! диаграмма: клиент(реакция) -->sever(socket)-->sidecar(nodejs)-->устройство
bigint
строка
клиент:
const [loading, setLoading] = useState(false);
const [deviceInfo, setDeviceInfo] = useState([]);
const [transport, setTransport] = useState(null);
const [error, setError] = useState(null);
const socket = io("http://localhost:8080", {
auth: {
token: "user",
},
query: {
deviceId: "user",
},
});
const getDevices = async () => {
setLoading(true);
setError(null);
try {
socket.emit("request", { clientId: "user" });
console.log("socket :>> ", socket);
socket.on("transportAndDeviceToFrontend", (data) => {
console.log("data :>> ", data);
const device = {
...data.device,
transportId: BigInt(data.device.transportId),
};
setDeviceInfo([device]);
setTransport(data.transport);
setLoading(false);
});
console.log("receivedDevices :>> ", devices);
} catch (err) {
setError("Failed to load devices. Please try again.");
console.log(error);
setLoading(false);
}
};
return (
{loading ? "Loading..." : "Get Device Transport"}
{error && {error}}
{deviceInfo.length > 0 && (
Device Information
{deviceInfo.map((device, index) => (
Serial: {device.serial}
Model: {device.model || "N/A"}
Product: {device.product || "N/A"}
Transport ID: {device.transportId.toString()}
))}
)}
{transport && (
{loading ? "Connecting..." : "Connect to Device"}
)}
);
сокет:
@SubscribeMessage('sendTransportAndDevice')
handleDevice(@MessageBody() data: any) {
console.log(`Received device:`, data);
this.server
.to(data.clientId)
.emit('transportAndDeviceToFrontend', {
device: data.device,
transport: data.transportId,
});
}
@SubscribeMessage('request')
sendRequest(@MessageBody() data: any) {
console.log(' :>> ', data);
this.server.to('device').emit('sendRequest', data);
}
коляска:
const main = async () => {
const deviceId = process.env.DEVICE_ID || "123";
const socketUrl = process.env.SOCKET_URL || "ws://localhost:8080";
const socket = io(socketUrl, {
auth: {
token: "device",
},
query: {
deviceId: deviceId,
},
});
socket.on("connect", async () => {
console.log("Connected Socket");
});
socket.on("sendRequest", async (data: any) => {
try {
const devices: AdbServerClient.Device[] = await getTransport();
log("devices :>> ", devices);
if (devices.length > 0) {
const client = new AdbServerClient(
new AdbServerNodeTcpConnector({ host: "127.0.0.1", port: 5037 })
);
const transport = await client.createTransport(devices[0]);
log("transport :>> ", transport);
const originalConnect = transport.connect;
transport.connect = async (service) => {
const adbSocket = await originalConnect.call(transport, service); //connect adb vs device
const writer = adbSocket.writable.getWriter(); // ghi dữ liệu vào adbSocket
adbSocket.readable = adbSocket.readable.pipeThrough(
new TransformStream({
async transform(chunk, controller) {
if (
decodeUtf8(chunk).includes("please input verify password:")
) {
await writer.write(encodeUtf8("adb36987\n"));
return;
}
controller.enqueue(chunk);
},
})
);
adbSocket.writable = new WritableStream({
write(chunk) {
return writer.write(chunk);
},
close() {
return writer.close();
},
abort() {
return writer.abort();
},
});
return adbSocket;
};
const { transportId, ...transportData } = transport;
socket.emit("sendTransportAndDevice", {
clientId: data.clientId,
device: {
...devices[0],
transportId: devices[0].transportId,
},
log: "Connected to device11",
});
log("Connected to device 2");
}
} catch (e) {
console.error("Error creating transport:", e);
socket.emit("error", {
message: "Failed to create transport",
clientId: data.clientId,
});
}
});
Подробнее здесь: https://stackoverflow.com/questions/793 ... connection
Как отправить идентификатор транспорта с устройства на клиент и использовать его для подключения ADB? ⇐ Android
Форум для тех, кто программирует под Android
1736603761
Anonymous
В настоящее время я работаю над проектом по подключению устройств Android к веб-клиенту через Node.js и WebSocket, [b]Tango ADB[/b]. Я могу составить список подключенных устройств с помощью AdbServerClient и получить идентификатор транспорта определенного устройства. Теперь я хочу отправить этот идентификатор транспорта с сервера клиенту через WebSocket, чтобы клиент мог использовать его для установления соединения ADB с устройством. Идентификатор транспорта — это тип данных bigint, поэтому возникает ошибка TypeError: Не знаю, как сериализовать BigInt, в нем отсутствует буква n. Как передать его клиенту? Если есть возможность, можно ли создать adb в клиенте? Пожалуйста!! помогите мне!! диаграмма: клиент(реакция) -->sever(socket)-->sidecar(nodejs)-->устройство
bigint
строка
клиент:
const [loading, setLoading] = useState(false);
const [deviceInfo, setDeviceInfo] = useState([]);
const [transport, setTransport] = useState(null);
const [error, setError] = useState(null);
const socket = io("http://localhost:8080", {
auth: {
token: "user",
},
query: {
deviceId: "user",
},
});
const getDevices = async () => {
setLoading(true);
setError(null);
try {
socket.emit("request", { clientId: "user" });
console.log("socket :>> ", socket);
socket.on("transportAndDeviceToFrontend", (data) => {
console.log("data :>> ", data);
const device = {
...data.device,
transportId: BigInt(data.device.transportId),
};
setDeviceInfo([device]);
setTransport(data.transport);
setLoading(false);
});
console.log("receivedDevices :>> ", devices);
} catch (err) {
setError("Failed to load devices. Please try again.");
console.log(error);
setLoading(false);
}
};
return (
{loading ? "Loading..." : "Get Device Transport"}
{error && {error}}
{deviceInfo.length > 0 && (
Device Information
{deviceInfo.map((device, index) => (
Serial: {device.serial}
Model: {device.model || "N/A"}
Product: {device.product || "N/A"}
Transport ID: {device.transportId.toString()}
))}
)}
{transport && (
{loading ? "Connecting..." : "Connect to Device"}
)}
);
сокет:
@SubscribeMessage('sendTransportAndDevice')
handleDevice(@MessageBody() data: any) {
console.log(`Received device:`, data);
this.server
.to(data.clientId)
.emit('transportAndDeviceToFrontend', {
device: data.device,
transport: data.transportId,
});
}
@SubscribeMessage('request')
sendRequest(@MessageBody() data: any) {
console.log(' :>> ', data);
this.server.to('device').emit('sendRequest', data);
}
коляска:
const main = async () => {
const deviceId = process.env.DEVICE_ID || "123";
const socketUrl = process.env.SOCKET_URL || "ws://localhost:8080";
const socket = io(socketUrl, {
auth: {
token: "device",
},
query: {
deviceId: deviceId,
},
});
socket.on("connect", async () => {
console.log("Connected Socket");
});
socket.on("sendRequest", async (data: any) => {
try {
const devices: AdbServerClient.Device[] = await getTransport();
log("devices :>> ", devices);
if (devices.length > 0) {
const client = new AdbServerClient(
new AdbServerNodeTcpConnector({ host: "127.0.0.1", port: 5037 })
);
const transport = await client.createTransport(devices[0]);
log("transport :>> ", transport);
const originalConnect = transport.connect;
transport.connect = async (service) => {
const adbSocket = await originalConnect.call(transport, service); //connect adb vs device
const writer = adbSocket.writable.getWriter(); // ghi dữ liệu vào adbSocket
adbSocket.readable = adbSocket.readable.pipeThrough(
new TransformStream({
async transform(chunk, controller) {
if (
decodeUtf8(chunk).includes("please input verify password:")
) {
await writer.write(encodeUtf8("adb36987\n"));
return;
}
controller.enqueue(chunk);
},
})
);
adbSocket.writable = new WritableStream({
write(chunk) {
return writer.write(chunk);
},
close() {
return writer.close();
},
abort() {
return writer.abort();
},
});
return adbSocket;
};
const { transportId, ...transportData } = transport;
socket.emit("sendTransportAndDevice", {
clientId: data.clientId,
device: {
...devices[0],
transportId: devices[0].transportId,
},
log: "Connected to device11",
});
log("Connected to device 2");
}
} catch (e) {
console.error("Error creating transport:", e);
socket.emit("error", {
message: "Failed to create transport",
clientId: data.clientId,
});
}
});
Подробнее здесь: [url]https://stackoverflow.com/questions/79348234/how-to-send-transport-id-from-device-to-client-and-use-it-for-adb-connection[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия