.net Google云运行无法连接MQTT

jm81lzqq  于 2023-01-27  发布在  .NET
关注(0)|答案(1)|浏览(154)

目前我正在开发一个带有一些控制器和最小MQTT服务器的IdeNet6应用程序。到目前为止,我在本地计算机上一切正常,但是,当部署到Google Cloud Run(GCR)时,我无法连接到MQTT服务器。
我注意到GCR容器希望您将传入流量Map到单个端口(在我的例子中是8080),但是我在端口1883(默认)上运行MQTT,无法连接到它。
我需要一个解决方案的方向,最好是在一个单一的容器。

程序.cs

var builder = WebApplication.CreateBuilder(args);

builder.WebHost.UseKestrel(o =>
{
    o.ListenAnyIP(1883, l => l.UseMqtt()); 
    o.ListenAnyIP(8080);
});

...

var app = builder.Build();

app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
    endpoints
        .MapConnectionHandler<MqttConnectionHandler>("/mqtt",
            httpConnectionDispatcherOptions =>
                httpConnectionDispatcherOptions.WebSockets.SubProtocolSelector = protocolList => protocolList.FirstOrDefault() ?? string.Empty);
});

app.UseMqttServer(server => server.StartAsync());
app.MapControllers();
app.Run();
yhqotfr8

yhqotfr81#

一个可能的选项是不使用2个端口。
如果您在WebSockets上使用MQTT,那么您的代理可以与HTTP服务器共享一个端口。

相关问题