SignalR HubConnectionState = 正在连接
Posted
技术标签:
【中文标题】SignalR HubConnectionState = 正在连接【英文标题】:SignalR HubConnectionState = connecting 【发布时间】:2021-12-15 19:41:19 【问题描述】:我正在尝试使用 Xamarin 客户端创建 SignalR 服务器。 每次我尝试连接到服务器时,状态只是“正在连接”而没有改变。试图用我在互联网上找到的代码绕过证书,但它并没有解决问题。当我尝试访问集线器站点(ip:port/notifier)时,我收到消息“需要连接 ID”
客户端:
public class SignalRService : ISignalRService
private readonly HubConnection hubConnection;
public SignalRService()
hubConnection = new HubConnectionBuilder()
.WithUrl("https://ip:5001/notifier", options =>
options.HttpMessageHandlerFactory = factory => new HttpClientHandler
ServerCertificateCustomValidationCallback = (message, cert, chain, errors) => return true;
;
)
.WithAutomaticReconnect()
.Build();
public void /*async Task*/ Connect()
hubConnection.StartAsync();
var a = hubConnection.State;
while (hubConnection.State == HubConnectionState.Connecting) //for debug purposes
continue;
a = hubConnection.State;
服务器端
public void ConfigureServices(IServiceCollection services)
services.AddRazorPages();
services.AddSignalR();
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
if (env.IsDevelopment())
app.UseDeveloperExceptionPage();
else
app.UseExceptionHandler("/Error");
app.UseHsts();
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
endpoints.MapRazorPages();
endpoints.MapHub<NotifyHub>("/notifier");
);
Thanks for any help!
【问题讨论】:
您是否已验证可以从您的设备/模拟器访问服务器?是否有防火墙阻止该端口? @Jason 可以到达。当我尝试使用模拟器上的浏览器访问它时,它显示连接不是私有的,但它是可以访问的。 @Jason 并为防火墙中的端口添加规则(希望正确) 【参考方案1】:所以我终于找到了解决办法!
问题是模拟器无法通过 http://localhost:port 连接到本地主机,但使用 ip "10.0.2.2:port"
由于某种原因,将 signalR 实现到客户端,因为服务也无法正常工作...
【讨论】:
以上是关于SignalR HubConnectionState = 正在连接的主要内容,如果未能解决你的问题,请参考以下文章