Mein Benachrichtigungsdienst läuft auf Docker auf meinem lokalen Computer mit freigelegtem Port 7295. Ich kann über den Postman-Websocket eine Verbindung herstellen, aber wenn ich versuche, von meinem Android-Emulator aus eine Verbindung herzustellen, erhalte ich folgende Fehlermeldung:

Und hier sind die Protokolle vom Benachrichtigungsdienst:

Und hier ist mein JS-Code aus der React-Native-Hook-App für Android:
Code: Select all
export const useSignalR = (id: string, isMerchant = false) => {
const [connection, setConnection] = useState(
null,
);
useEffect(() => {
const conn = new signalR.HubConnectionBuilder()
.withUrl('http://10.0.2.2:7295/orderNotificationHub', {
skipNegotiation: true,
transport: signalR.HttpTransportType.WebSockets,
})
.withAutomaticReconnect()
.configureLogging(signalR.LogLevel.Information)
.build();
conn
.start()
.then(() => {
console.log('connected to hub');
if (isMerchant) {
conn.invoke('RegisterMerchant', id).catch(console.error);
} else {
conn.invoke('RegisterUser', id).catch(console.error);
}
setConnection(conn); // only set when ready
})
.catch(err => console.error('connection failed: ', err));
return () => {
conn.stop();
};
}, [id, isMerchant]);
return connection;
Ich gebe auch den program.cs-Code vom Benachrichtigungsdienst weiter:
Code: Select all
builder.WebHost.ConfigureKestrel(options =>
{
options.ListenAnyIP(7295);
});
builder.Services.AddControllers();
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
builder.Services.AddSignalR();
builder.Services.AddCors(options =>
{
options.AddPolicy("DevCors", policy =>
{
policy
.AllowAnyHeader()
.AllowAnyMethod()
.SetIsOriginAllowed(_ => true)
.AllowCredentials();
});
});
app.UseCors("DevCors");
app.UseWebSockets();
app.UseAuthorization();
app.MapControllers();
//map hubs
app.MapHub("/orderNotificationHub");
Mobile version