Однако этот поток также должен оставаться активным, даже если приложение закрыто. Подходят ли для этого WebSockets?
Это приложение в конечном итоге будет работать на одном устройстве iOS, но для тестирования подойдет и Android. Как лучше всего обеспечить, чтобы соединение WebSocket оставалось активным и могло воспроизводить звук, даже когда приложение находится в фоновом режиме или закрыто?
Некоторые из моего тестового кода:export default function Index() {
const [isConnected, setIsConnected] = useState(false);
async function PlaySound() {
console.log("Playing sound...");
const { sound: PlaybackObject } = await Audio.Sound.createAsync(
require("../assets/sounds/chaching.mp3"),
{ shouldPlay: true }
);
await PlaybackObject.playAsync();
PlaybackObject.setOnPlaybackStatusUpdate(async (status) => {
if (status.isLoaded && !status.isPlaying) {
await PlaybackObject.unloadAsync();
}
});
}
useEffect(() => {
console.log("Connecting to Websocket server...");
const ws = new WebSocket("ws://192.168.1.96:7000");
ws.onopen = () => {
console.log("WebSocket connection opened");
// to send message you can use like that : ws.send("Hello, server!");
setIsConnected(true);
};
ws.onmessage = (e) => {
console.log("Message from server:", e.data);
if (e.data === "Bzbz
PlaySound();
}
};
ws.onerror = (e) => {
console.log("WebSocket error:", e);
setIsConnected(false);
};
ws.onclose = (e) => {
console.log("WebSocket connection closed:", e.code, e.reason);
setIsConnected(false);
};
return () => {
ws.close();
}
}, []);
Подробнее здесь: https://stackoverflow.com/questions/793 ... in-the-bac