当前位置: 首页 > 编程语言 > C#

SignalRIOS客户端,WebSocket传输无法从服务器调用此方法share

时间:2023-04-10 15:45:18 C#

SignalRIOS客户端,WebSocket传输无法从服务器调用此方法网络服务器提供通信。我可以从自托管跨域服务器连接longpull和调用方法而不会出现任何错误。但是由于我的应用需求,我不得不使用WebSocket。我有一个单例管理器,例如:@implementationSignalRManagerstaticintreconnectingTry;+(id)sharedManager{staticSignalRManager*sharedHttpManager=nil;静态dispatch_once_tonceToken;dispatch_once(&onceToken,^{sharedHttpManager=[[self;palloc]init]hubConnection=[SRHubConnectionconnectionWithURL:@"http://xxx:8080/signalr"];sharedHttpManager.proxy=[sharedHttpManager.hubConnectioncreateHubProxy:@"myhub"];});返回sharedHttpManager;}+(SRHubProxy*)proxy{返回[[SignalRManagersharedManager]proxy];}+(SRHubConnection*)connection{返回[[SignalRManagersharedManager]hubConnection];}+(void)start{SRWebSocketTransport*transport=[[SRWebSocketTransportalloc]init];[[SignalRManager连接]开始:传输];}+(void)stop{[[SignalRManager连接]停止];我这样调用:[[SignalRManagerproxy]invoke:@"Hello"withArgs:[NSArrayarray]];我建立到服务器的连接可以调用客户端方法,但是当我尝试从客户端调用方法到服务器时,“请求失败:请求错误(400)”错误貌似是SRWebSocketTransport中协议(SRClientTransportInterface)实现的问题,其实是:-(void)send:(id)connectiondata:(NSString*)datacompletionHandler:(void(^)(idresponse,NSError*error))block;并且必须是-(void)send:(id)connectiondata:(NSString*)dataconnectionData:(NSString*)connectionDatacompletionHandler:(void(^)(idresponse,NSError*error))block;就像子类没有实现调用超类(SRHttpBasedTransport)方法一样,所以你得到“Requestfailed:BadRequest(400)”(是另一个http请求,不是websocket)。要解决这个问题,只需添加;打开文件SRWebSocketTransport.m,修改实现如下:-(void)send:(id)connectiondata:(NSString*)dataconnectionData:(NSString*)connectionDatacompletionHandler:(void(^)(idresponse,NSError*error))block{[_webSocketsend:data];if(block){block(nil,nil);}}希望这有帮助。pd:刚刚查了一下github貌似修复在feature-2.0.0.beta1分支以上是C#学习教程:SignalRIOSclient,WebSockettransmissioncannotcallthemethodfromtheservertosharewholecontent,如果它对大家有用,需要了解更多C#学习教程,希望大家多多关注-本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: