websocket没准备好如何解决_记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连接。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值