iOS中socket.io的集成和使用

作者: 杨七一 | 来源:发表于2018-01-19 18:32 被阅读902次

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

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

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

    SIOSocket实现文件代码 SIOSocket实现文件代码

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

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

    链接方法:

    oc代码

    前端代码:

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

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

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

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

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

    通过同样的方式调用前端的emit方法 前端示例 最后的关闭socket方法

    相关文章

      网友评论

        本文标题:iOS中socket.io的集成和使用

        本文链接:https://www.haomeiwen.com/subject/skcaoxtx.html