关于使用socket连接,接收数据的问题

之前在做项目的时候,需要使用socket来传输数据,所以初次使用socket的时候真心的踩过很多坑,找了很多第三方最后选择socket.io,至于理由就不多说了。

官网地址:https://socket.io
github地址:https://github.com/socketio/socket.io-client-swift

遇到的问题如下:

socket能接收到服务器返回的数据,但是对比安卓那边发现,我这边的数据只有一部分,至于另外一部分就不知道为什么接收不到了,后来仔细查Log信息,发现并不是另一部分接收的问题,而是解析的时候遇到问题,所以没办法解析出正确的数据返回给我。

查看socket.io的底层代码发现它的解析是用系统的方法进行解析的,代码截图如下:
关于使用socket连接,接收数据的问题_第1张图片
F6056E8D-2792-4D22-A876-CAF10E60C201.png

所以从这一点就可以看出估计是数据的问题了,然后将log输出的接收数据copy了一份,自己写了个小demo,将这段代码解析测试一下,发现报错:
Error Domain=NSCocoaErrorDomain Code=3840 "Number wound up as NaN around character 6888." UserInfo={NSDebugDescription=Number wound up as NaN around character 6888.}

其中的一段测试数据如图:
关于使用socket连接,接收数据的问题_第2张图片
3041505809043_.pic.jpg

然后百度找了一下这个问题的原因,发现是数据格式的问题,然后又研究了一下解析的这段数据,发现问题出在小数点的位数上,最后联系了后台人员把这个问题告诉他们,最终改了一下数据才解决了。

一开始的时候还去github上去提了一些自己的问题,现在想想真的给人家添麻烦了,自己应该再多深入研究点的,不要在自己还没确定是不是自己这边的问题的时候就去怀疑别人,至少应该确保不是自己这边的问题的时候再去把问题抛出来,这是自己值得学习的地方。
虽然整个过程有点艰难,但是这个经历却很难忘。而且非常感谢那段时间一直帮助我的大神,如果不是大神的帮忙我还不知道要搞多少天才能解决这个问题呢,太感谢了!

参考文章:
http://blog.csdn.net/jijiji000111/article/details/52471000
https://stackoverflow.com/questions/18650365/valid-json-but-cocoa-error-3840-from-afnetworking-nsjsonserialization

你可能感兴趣的:(关于使用socket连接,接收数据的问题)