Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Nativescript/Angular和Signaler出现问题_Angular_Signalr_Nativescript_Nativescript Angular - Fatal编程技术网

Nativescript/Angular和Signaler出现问题

Nativescript/Angular和Signaler出现问题,angular,signalr,nativescript,nativescript-angular,Angular,Signalr,Nativescript,Nativescript Angular,我正在使用Nativescript/Angular和ASP.NET Core 3.1 Web API开发一个应用程序 我正在尝试使用SignalR Core实现实时功能 signar的服务器端实现运行良好(我已经用Angular应用程序对其进行了测试),我可以调用方法并处理所有传入事件 在我使用的客户端(Nativescript)上,我遵循在该链接上找到的说明 我正在Android Studio模拟器(Pixel_3a_API_30_x86/Android 11)上运行该应用程序 这是我的密码:

我正在使用Nativescript/Angular和ASP.NET Core 3.1 Web API开发一个应用程序 我正在尝试使用SignalR Core实现实时功能

signar的服务器端实现运行良好(我已经用Angular应用程序对其进行了测试),我可以调用方法并处理所有传入事件

在我使用的客户端(Nativescript)上,我遵循在该链接上找到的说明

我正在Android Studio模拟器(Pixel_3a_API_30_x86/Android 11)上运行该应用程序

这是我的密码:

从“nativescript信号器核心/角度”导入{SignalrCore};
申报var要求;
var WebSocket=require('nativescript-websockets');
信号核心:信号核心;
构造函数(){
this.signalrCore=新的signalrCore();
this.signalCore.on('connected',(data)=>{
console.log('connected');
});
this.signalCore.on('PaymentSuccess',(paymentId:string)=>{
log('Payment Success!:',paymentId);
});
}  
ngOnInit():void{
此.signalcore.start('https://b685239ad8eb.ngrok.io/paymenthub')
.然后((未连接:布尔)=>{
console.log('isConnected?',isConnected);
如果(未连接){
this.signalcore.invoke('JoinGroup','room_name');
}
});
}
在服务器端,我有以下方法:

公共任务JoinGroup(字符串groupName)
{
返回Groups.AddToGroupAsync(Context.ConnectionId,groupName);
}
公共覆盖异步任务OnConnectedAsync()
{
var connId=Context.ConnectionId;
}
公共覆盖异步任务OnDisconnectedAsync(异常示例)
{
var connId=Context.ConnectionId;
}
在客户端启动连接时,会触发OnConnectionedAsync方法。 从不触发断开连接的同步。(我添加这两个方法只是为了调试目的)

从不调用JoinGroup方法

客户端上的('connected')…上的信号核心永远不会触发

以下是我在信号集线器接口中使用的3种方法:

公共接口IPaymentHub
{
任务OnPaymentSuccessful(字符串paymentId);
任务OnPaymentFailed(字符串paymentId);
任务测试消息(字符串消息);
}
我使用TestMessage方法向所有连接的客户端发送测试消息,但这也不起作用

有时我在控制台中遇到以下错误:

JS: Unhandled Promise rejection: Error - Connection already close!
我已经使用@microsoft/signal在虚拟角度应用程序上测试了完全相同的场景,它工作得非常好。

我在这里发现了一个类似的问题,但没有答案:

我在网上找不到任何相关资源,如果有人能帮助我,我将非常感激


谢谢。

在调用JoinGroup方法前添加1秒超时后,我已解决了此问题:

if(未连接){
设置超时(()=>{
this.signalcore.invoke('JoinGroup','room_name');
}, 1000);
}

Signal在Chrome节流请求方面遇到问题,请参阅此处的更多信息:@nathaniel flick感谢您的回答。我认为这不是问题所在,因为它在Chrome(标准Angular应用程序)上工作,在Angular本机应用程序(Android)上不工作。