记websocket遇到的问题以及解决方法

一、前言

        在本文中我使用的websocket框架是FaceBook提供的SocketRocket框架,在此不再为此进行过多的介绍,网上websocket介绍很全,如:SRWebSocket源码浅析 ,还有理解websocket的文章:WebSocket原理 等。本文着重叙述在使用WebSocket与服务器对接时遇到的问题。

二、问题及解决方法

        1、连接失败,错误信息: Error Domain=NSPOSIXErrorDomain Code=61 "Connection refused" UserInfo={_kCFStreamErrorCodeKey=61, _kCFStreamErrorDomainKey=1}

        解析:61错误是:服务器端口没打开

        解决办法:检查服务器是否开启端口。若服务器使用的是别人的服务器,使用各种抓包软件抓一下是否在连接websocket前使用post或者get方法请求一遍,模拟一下发送的参数,看看是否将其端口开启。

        2、连接成功,立刻断开,断开信息:code:1001 reason :Stream end encountered wasclean:0

        解析:1001,表示“离开”(going away),例如服务器关闭或浏览器导航到其他页面

        解决办法:检查socket初始化方法,与socket协议进行比较(抓包连接情况),使用

- (id)initWithURLRequest:(NSURLRequest*)request protocols:(NSArray*)protocols allowsUntrustedSSLCertificates:(BOOL)allowsUntrustedSSLCertificates; 方法初始化socket对象。在protocols数组中装着协议内容,如:_protocolsArray = @[@"XXX"]; 其中,XXX为抓包出来的protocol内容,如图所示:

抓包出来的protocol

        3、连接成功,有收到心跳信息,然后断开,断开信息:code:1001 reason :Stream end encountered wasclean:0

        解析:1001,离开。在收到心跳包的情况下,出现断开,这种情况只有服务器发送心跳包给你,你没有回复服务器,服务器默认你离开了。

        解决方法:回复心跳包给服务器,心跳包一问一答的对话方式保持socket连接。

        至此,前两个小问题都解决好了,这两个小问题卡了我快一周的时间,记录一下。

参考文档:WebSocket关闭连接

                    WebSocket_API的使用

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 原文地址:http://www.ibm.com/developerworks/cn/java/j-lo-WebSo...
    敢梦敢当阅读 8,942评论 0 50
  • 前言 本文会用实例的方式,将iOS各种IM的方案都简单的实现一遍。并且提供一些选型、实现细节以及优化的建议。 注:...
    maTianHong阅读 2,401评论 4 12
  • Spring Web MVC Spring Web MVC 是包含在 Spring 框架中的 Web 框架,建立于...
    Hsinwong阅读 22,514评论 1 92
  • 第一次看到刻奇这个名词是前天在一个的公众号上知晓的,因为好奇就上了搜索引擎查询这个词语的解释:Kitsch这个...
    墨小凝阅读 5,467评论 0 1
  • 你很好但是我们不合适有几分道理。 每个人都有自己的生活不羡 不扰。 真心与否 又不傻 自然会感受到只是时间早晚而已...
    从0到1的平方阅读 145评论 0 0