iOS socketio 的使用方法

引言

最近有一个关于客户端和pc端的项目,要求客户端上线是通知pc端在线,由于服务器已经写好了socketio,所以我也只能用socketio。

正文

话不多说,经查证socketio现在已经没有iOS版本了,只有swift版,接下来说说面临困难及解决方法:1、oc项目引用Swift的框架Socket.IO-Client-Swift (Socket.IO-Client-Swift的Github地址); 2、连接过程的设置和参数传递。

1、导入Socket.iO的sdk : Socket.IO-Client-Swift(地址在上面)

使用cocapods 导入 Socket.IO-Client-Swift 的sdk!
使用cocapods 导入 Socket.IO-Client-Swift 的sdk!
使用cocapods 导入 Socket.IO-Client-Swift 的sdk!(切记,重要的事情说三遍)手动导入的话会出现各种问题。

首先在终端检测是否安装了cocoapods

1.  打开"终端"查看pod版本:
        pod --version 
    如果显示:
        -bash: pod: command not found 
    就说明还没安装pod,就要先安装pod
2.  安装pod,在“终端”输入:
        sudo gem install cocoapods
3.创建podfile文件:pod init

在创建的podfile文件中输入如下代码,因为是swift库所以要添加use_frameworks!

platform :ios,'9.0'
use_frameworks!

target 'socketio' do
pod 'Socket.IO-Client-Swift', '~> 15.1.0'

end```

要注意的是一般我们打开项目是双击*.xcodeproj文件打开,例如demo.xcodeproj。在使用pod导入安装了第三方库后,系统会在同一目录下自动生成一个***.xcworkspace文件,这时打开项目应该双击***.xcworkspace而不再是***.xcodeproj。**

2、桥接文件

由于Socket.IO-Client-Swift 是swift框架所以在oc项目中需要创建桥接文件 :
1、创建一个swift文件,并选择创建桥接文件(socketio-Bridging-Header.h);
2、在桥接文件中 导入框架 “@import SocketIO;”
3、在oc 文件中引用桥接文件;

3、SocketIO的使用步骤

在viewcontroller.h 中定义变量:

#import <UIKit/UIKit.h>
#import "socketio2-Bridging-Header.h"

@interface ViewController : UIViewController

@property (strong, nonatomic)  SocketIOClient* socket;

@property (strong, nonatomic) SocketManager* manager;
-(void)contect;
@end```

viewcontroller.m 中添加@import SocketIO; 具体代码如下:

  NSURL *url = [NSURL URLWithString:@"http://192....."];
    _manager = [[SocketManager alloc] initWithSocketURL:url config:@{@"log": @NO, @"forcePolling": @YES,@"reconnectWait":@1}];
    _socket = _manager.defaultSocket;

    //监听是否连接上服务器,正确连接走后面的回调/
    [_socket on:@"connect" callback:^(NSArray* data, SocketAckEmitter* ack) {
        NSLog(@"连接成功");
        NSDictionary *dic =@{@"operation": @"connected",
            @"userId":@"98271d0f-580c-4b79-868f-f08e9adaea9d",
            @"name": @"李二",
            @"source": @"mobile",
            @"role": @"2",
            @"isOnline": @"在线"
        };
        
        //dictionary 转json
        NSDate *jsonData=[NSJSONSerialization dataWithJSONObject:dic options:NSJSONWritingPrettyPrinted error:nil];
        NSString *jsonString=[[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
        
        NSMutableString *mutStr = [NSMutableString stringWithString:jsonString];
        NSRange range = {0,jsonString.length};

        //去掉字符串中的空格

        [mutStr replaceOccurrencesOfString:@" " withString:@"" options:NSLiteralSearch range:range];

        NSRange range2 = {0,mutStr.length};

        //去掉字符串中的换行符

        [mutStr replaceOccurrencesOfString:@"\n" withString:@"" options:NSLiteralSearch range:range2];
        
        [_socket emit:@"message" with:@[mutStr]];
    }];
    [_socket on:@"error" callback:^(NSArray * data, SocketAckEmitter * ack) {
        NSLog(@"socket.io error %@",data);
    }];
        [_socket connect];

谢谢观看!

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值