signalr_socket

一个用于 Android、iOS、macOS 和 Web 的 aspx.net SignalR 客户端 Flutter 插件

入门

注意:此库不兼容 ASP.NET Core SignalR

添加依赖

dependencies:
  signalr_socket: ^1.0.8 #latest version

初始化 SignalR Socket 并连接到服务器。

SignalrSocket signalrSocket = SignalrSocket(
  url: 'https://signalr.socket.com',
  hubName: 'hubName',
  eventName: 'eventName',
  queryString: {'key': 'value'},
  updateConnectionStatus: (status) {
    debugPrint("signalr socket update connection status ${status.name}");
  },
  newMessage: (message) {
    debugPrint("signalr socket new message $message");
  },
);

signalrSocket.connect();

Android 设置

  • 为 Android 的发布模式添加混淆规则
  • 在您的 Android 项目中创建一个新文件:android/app/proguard-rules.pro
  • 将以下行添加到 proguard-rules.pro

-keep class com.github.signalr4j.client.hubs.HubResult { *; }
-keep class com.github.signalr4j.client.hubs.HubInvocation { *; }
-keep class com.github.signalr4j.client.hubs.HubProxy$* { *; }
-keep class com.github.signalr4j.client.hubs.HubConnection {*;}

如果您想要一个 HTTP URL,那么您需要将以下行添加到您的 Android 项目的 manifest 中。

<application
        android:usesCleartextTraffic="true">
</application>

Web 设置

  • 将一些 js 文件添加到您的 Web 项目的 ‘web/signalR_js’ 文件夹中
  • 在此处下载javascript文件 https://github.com/ARASHz4/flutter_signalR_js/archive/refs/tags/1.0.0.zip
  • 将 ‘jquery.min.js’、‘signalr.js’ 和 ‘socketConnection.js’ 这 3 个文件添加到 ‘web/signalR_js’ 文件夹中
  • 进入 ‘web/index.html’ 并在 header 中添加以下行

<head>
    <!--other lines-->

    <script defer type="application/javascript" src="signalR_js/jquery.min.js"></script>
    <script defer type="application/javascript" src="signalR_js/signalr.js"></script>
</head>
  • 并在 body 中添加以下行

<body>
    <!--other lines-->

    <script defer type="application/javascript" src="signalR_js/socketConnection.js"></script>
</body>

GitHub

查看 Github