это SignalR цель C используется в Swift, используя Bridging-заголовок
Во-первых, установить Бобы
стручок 'SignalR-ObjC'
============================= ==========================
Добавить Объективные Классы C имя SignalRClassViewController.h и SignalRClassViewController.m
==== ================================================== = SignalRClassViewController.h
#import <UIKit/UIKit.h>
#import <SignalR_ObjC/SRClientTransportInterface.h>
#import <SignalR_ObjC/SRHubProxy.h>
#import <SignalR_ObjC/SRHubConnection.h>
#import <SignalR_ObjC/SRConnection.h>
#import <SignalR_ObjC/SRHubConnectionInterface.h>
@interface SignalRClassViewController : UIViewController<SRConnectionDelegate, SRHubConnectionInterface, SRClientTransportInterface>
// This method is used to have Single Instance. In the whole app, Life cycle makes sure you are using only one Instance of SignalR Class because of it one to one connection so we need listeners which continue to listen each time.
+(SignalRClassViewController *)getInstance;
-(void)SignalRConnection;
-(void)SignalRStopCoonection;
// Write your Own Methods
-(void)assignUser;
-(void)GetWebActiveClients;
@end
==================================================================================================== ======== SignalRClassViewController.m
#import "SignalRClassViewController.h"
@interface SignalRClassViewController()
{
NSMutableArray *array ;
}
@end
static SRHubProxy *chat = nil;
static SRHubConnection *hubConnection = nil;
@implementation SignalRClassViewController
static SignalRClassViewController *instance = nil;
+(SignalRClassViewController *)getInstance
{
@synchronized(self)
{
if(instance==nil)
{
instance= [SignalRClassViewController new];
[instance iniHUB];
}else{
[instance iniHUB];
}
}
return instance;
}
-(void) iniHUB{
if(hubConnection == nil){
NSDictionary *parameters;
parameters = @{ @"UserId": @"121",
@"UserToken": @"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJNeUhhc2giOiIyYzg5ODVmZC1jZDkyLTRjNzItOWNmYi01MWIyMWY1Y2FjZGQiLCIyYzg5ODVmZC1jZDkyLTRjNzItOWNmYi01MWIyMWY1Y2FjZGQiOjEyMX0.bDnuuroAmXvh-kifWN5jpJaSJVnMipuMD4QXon2lB-w"
};
hubConnection = [SRHubConnection connectionWithURLString:@"http://web.abc.......xyz.it" queryString:parameters];
// parameters if you want to authenticate connection
else use hubConnection = [SRHubConnection connectionWithURLString:@"http://web.abc.......xyz.it"];
[hubConnection setDelegate:self];
chat = [hubConnection createHubProxy:@"yourHubName"];
// Add event for which you want to active your listener when server trigger it
[chat on:@"ResponseAssignUserDevice" perform:self selector:@selector(responseAssignUserDevice:)];
[chat on:@"GetWebActiveClients" perform:self selector:@selector(ResponseGetWebActiveClients:)];
[hubConnection start];
// Start Connection
}
}
- (void)viewDidLoad {
[super viewDidLoad];
}
#pragma mark SRConnection Delegate
- (void)SRConnectionDidClose:(id<SRConnectionInterface>)connection{
NSLog(@"Connection close");
[self removeChatObserver];
[self iniHUB];
}
-(void) removeChatObserver{
if(chat!=nil){
chat=nil;
hubConnection=nil;
}
}
- (void)SRConnectionDidSlow:(id<SRConnectionInterface>)connection{
NSLog(@"Reconnect Slow");
}
- (void)SRConnectionWillReconnect:(id<SRConnectionInterface>)connection{
NSLog(@"Reconnected");
}
-(void)SignalRStopCoonection{
// Start the connection
if(hubConnection!= nil){
[hubConnection stop];
[self removeChatObserver];
}
}
-(void)SRConnectionDidOpen:(SRHubConnection*)connection{
NSLog(@"SR Conection open");
// When Connection is open call AssignUser
[self assignUser];
}
-(void)assignUser{
NSDictionary *parameters;
parameters = @{ @"UserId": @"121",
@"DeviceType": @"Mobile",
@"WebToken" : @"NA",
@"DeviceOS" : @"iPhone",
@"BrowserName" : @"NA"
};
array = [[NSMutableArray alloc]init];
[array addObject:parameters];
[chat invoke:@"AssignUserDevice" withArgs:array];
// This will invoke AssignUserDevice which is on server and you have added it selector when server will reponse on this name responseAssignUserDevice
}
- (void)responseAssignUserDevice:(NSString *)message {
// Print the message when it comes in
NSLog(@"SR msg %@",message);
}
-(void)GetWebActiveClients{
array = [[NSMutableArray alloc]init];
[array addObject:[NSString stringWithFormat:@"121"]];
[chat invoke:@"GetWebActiveClients" withArgs:array];
}
- (void)ResponseGetWebActiveClients:(NSString *)message
{
// Print the message when it comes in
NSLog(@"SR msg responseGetArticleByDate %@",message);
}
@end
=============================== ========================
ViewController.Swift
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
@IBAction func assignUser(_ sender: Any) {
SignalRClassViewController.getInstance().assignUser()
}
@IBAction func GetWebActiveClients(_ sender: Any) {
SignalRClassViewController.getInstance().getWebActiveClients()
}
}
Пожалуйста, проверьте code here
Я работал с SignalR, Я могу помочь с O bъективный процесс C. Not Swift –
@AbhishekSharma без проблем может помочь. спасибо – ava
Подождите, я создаю быстрое приложение для вас и быстро отправлю. –