У меня есть http-сервер на C++, работающий на моем локальном хосте, чтобы передавать некоторые данные в мой интерфейс Electron React. К сожалению, у меня возникли серьезные проблемы, и я пытался гуглить день и ночь. Он использует своего рода динамическое назначение портов. Сервер определенно работает, так как я могу свернуть ответ и открыть сгенерированные данные JSON в Firefox (не в Chrome, что заставляет меня думать, что это электронная проблема).
Я получаю следующую ошибку в своем инструменте разработки для порта 8080, который определенно работает:
import React, { createContext, useContext, useState, useEffect, ReactNode } from 'react';
const ports = [8080, 8081, 8082, 8083, 8084];
interface SimDataContextProps {
data: any;
error: string | null;
refreshData: () => void;
}
interface SimDataProviderProps {
children: ReactNode;
}
const SimDataContext = createContext(undefined);
export const SimDataProvider: React.FC = ({ children }) => {
const [data, setData] = useState(null);
const [error, setError] = useState(null);
const fetchSimData = async () => {
for (let port of ports) {
try {
console.log(`Trying to fetch data from http://localhost:${port}/simdata`);
const response = await fetch(`http://localhost:${port}/simdata`);
if (response.ok) {
const jsonData = await response.json();
console.log(`Successfully fetched data from port ${port}:`, jsonData);
setData(jsonData);
setError(null);
return;
} else {
console.error(`Network response was not ok for port ${port}`);
}
} catch (err) {
console.error(`Error fetching from port ${port}:`, err);
}
}
setError('Failed to fetch data from all ports.');
};
useEffect(() => {
fetchSimData();
}, []);
return (
{children}
);
};
export const useSimData = () => {
const context = useContext(SimDataContext);
if (context === undefined) {
throw new Error('useSimData must be used within a SimDataProvider');
}
return context;
};
До сих пор я пробовал настроить 127.0.0.1 вместо использования localhost, но не помогло. Я также попытался разрешитьInsecureContent и поэкспериментировать с различными настройками CORS. Я также пытался отключить кеш.
Спасибо за помощь!
У меня есть http-сервер на C++, работающий на моем локальном хосте, чтобы передавать некоторые данные в мой интерфейс Electron React. К сожалению, у меня возникли серьезные проблемы, и я пытался гуглить день и ночь. Он использует своего рода динамическое назначение портов. Сервер определенно работает, так как я могу свернуть ответ и открыть сгенерированные данные JSON в Firefox (не в Chrome, что заставляет меня думать, что это электронная проблема). Я получаю следующую ошибку в своем инструменте разработки для порта 8080, который определенно работает:
Попытка получить данные из http://localhost:8080/simdata GET http://localhost:8080/simdata net::ERR_CONNECTION_RESET
Для неиспользуемых портов я получаю: GET http://localhost:8083/simdata net::ERR_CONNECTION_REFUSED
Вот создание C++ сервер: [code]#define WIN32_LEAN_AND_MEAN #include #include #include "SimConnect.h" #include #include
// Check if data has been updated if (g_dataUpdated) { g_dataUpdated = false; } Sleep(1000); }
return 0; }
[/code] А вот код React, который обрабатывает запрос к серверу: [code]import React, { createContext, useContext, useState, useEffect, ReactNode } from 'react';
const fetchSimData = async () => { for (let port of ports) { try { console.log(`Trying to fetch data from http://localhost:${port}/simdata`); const response = await fetch(`http://localhost:${port}/simdata`); if (response.ok) { const jsonData = await response.json(); console.log(`Successfully fetched data from port ${port}:`, jsonData); setData(jsonData); setError(null); return; } else { console.error(`Network response was not ok for port ${port}`); } } catch (err) { console.error(`Error fetching from port ${port}:`, err); } } setError('Failed to fetch data from all ports.'); };
useEffect(() => { fetchSimData(); }, []);
return (
{children}
); };
export const useSimData = () => { const context = useContext(SimDataContext); if (context === undefined) { throw new Error('useSimData must be used within a SimDataProvider'); } return context; };
[/code] До сих пор я пробовал настроить 127.0.0.1 вместо использования localhost, но не помогло. Я также попытался разрешитьInsecureContent и поэкспериментировать с различными настройками CORS. Я также пытался отключить кеш. Спасибо за помощь!