socket.io android ios,iOS中socket.io的集成和使用

因为要做一些即时交互的功能,所以需要用到socket。

为了实现pc,安卓,ios,三个平台交互,便使用了socket.io(之前用的websockt,老实说,使用简单方便,但是有时候在消息接收方面会有延迟,最主要是iOS开发较晚,安卓和pc已经集成进去了 😣,我就得配合他们来)

首先使用的socket.io官方的object-c方案,然而使用不了🤷‍♂️。然后想了下,能否通过加载一个隐藏的webview,访问socket地址的方式来监听消息事件,然后通过这个思路找了一下,找到了这个  SIOSocket   附上地址github 上demo下载地址

6da087b823d6

SIOSocket实现文件代码

6da087b823d6

SIOSocket实现文件代码

可以看到本质上是通过苹果自带的JavaScriptCore框架获取js对象,然后对前端代码进行调用和事件获取。毕竟WebSocket本质上是html5新增加的一种通信协议,而socket.io是基于webSocket之上封装的。

再来说说,SIOSocket里面方法的使用,比如最直观的链接socket,接收消息和发送消息。

链接方法:

6da087b823d6

oc代码

前端代码:

6da087b823d6

可以看到,socket.on是接收方法,里面的参数的事件名称包含 connect(链接),messageevent(消息事件,由开发人员商定),disconnect(断开连接)

而oc里面便是通过jscontext对象执行evaluateScript方法来掉用前端的方法,前端方法名和参数都作为evaluateScript的一个nsstring参数传入.而执行的前端方法便是上面的 socket.on.

6da087b823d6

而在接收到即时消息之后会存入一个args数组里面,取出来进行json解析便拿到了传递过来的数据.

6da087b823d6

下面是发送方法,详细介绍注释里面有:因为发生过发送的数据格式和服务端接收到的不一样的问题,发现是做过对字符同义化处理,便进行了encode编码,再由后台decode一下

6da087b823d6

通过同样的方式调用前端的emit方法

6da087b823d6

通过同样的方式调用前端的emit方法

6da087b823d6

前端示例

6da087b823d6

最后的关闭socket方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值