Flutter AspNet Core SocketException(SocketException:操作系统错误:连接超时,errno = 110,地址= 192.168.1.87,端口= 46186)

时间:2020-05-21 10:10:20

标签: flutter asp.net-core signalr

我正在尝试使用智能手机(而不是仿真器)连接到带有SignalR后端的Aspnet Core。 我将Cors添加到了Startup.cs:

public void ConfigureServices(IServiceCollection services)
    {
        services.AddCors(options =>
        {
            options.AddPolicy(MyAllowSpecificOrigins,
                builder => builder.SetIsOriginAllowed((host) => true)
                .AllowAnyMethod()
                .AllowAnyHeader()
                .AllowCredentials());
        });

        services.AddSignalR();
    }

readonly string MyAllowSpecificOrigins = "AllowOrigins";
...

app.UseCors(MyAllowSpecificOrigins);

我尝试与Angular前端连接,并且效果很好,并且我希望在Flutter App中也这样做。 这是代码的一部分:

const url = 'http://192.168.1.87:44327/signalrtc';

class _MyHomePageState extends State<MyHomePage> {
  final hubConnection = HubConnectionBuilder().withUrl("$url").build();

  @override
  void initState() {
    super.initState();

    hubConnection.onclose((_) {
    print("Connessione persa");
    });

    hubConnection.on("ReceiveMessage", onReceiveMessage);
    startConnection();
  }

  void startConnection() async {
    print('start');
    await hubConnection.start();
  }

我仅使用Flutter SignalR package,并且复制了本地计算机IPv4以连接到后端,因为正如我已经说过的,我没有使用仿真器,所以无法插入10.0.2.2,但是如果我尝试运行该应用程序,它将给我该错误。 我的计算机和智能手机都连接到同一网络。

有什么主意吗?

1 个答案:

答案 0 :(得分:0)

已解决

我刚刚为Visual Studio安装了Conveyor by Keyoti

ASP.NET Core - remote access from smartphone

有了它,您无需更改任何配置,它仅在后台运行,并为您提供可以远程使用的端口,并且它可以隧道传输到Internet,因此您可以使用公共URL。< / p>

您只需安装它,在调试模式下运行,然后打开Keyoti,您将找到另一个可用于智能手机的URL。

enter image description here

最后,我将Flutter项目中的URL更改为:

const url = 'http://192.168.1.87:44327/signalrtc';

收件人:

const url = 'https://192.168.1.87:45456/signalrtc';

基本上是我从键盘输入的IPv4,但带有另一个端口。