Что лучше всего использовать для поддержания активного соединения с сервером WebSocket в фоновом режиме в приложении ReaIOS

Программируем под IOS
Ответить Пред. темаСлед. тема
Anonymous
 Что лучше всего использовать для поддержания активного соединения с сервером WebSocket в фоновом режиме в приложении Rea

Сообщение Anonymous »

У меня есть очень простое приложение React Native, которое подключается к простому бэкэнду Express, который также служит сервером WebSocket. У этого бэкэнда есть конечная точка для веб-перехватчика, и при каждом попадании в эту конечную точку он отправляет клиенту сообщение через WebSocket, которое предлагает клиенту (приложение React Native) воспроизвести звук.
Однако этот поток также должен оставаться активным, даже если приложение закрыто. Подходят ли для этого 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «IOS»