如果连接了 Socket.io,Alamofire 请求总是失败并显示“请求超时”

Posted

技术标签:

【中文标题】如果连接了 Socket.io,Alamofire 请求总是失败并显示“请求超时”【英文标题】:Alamofire request always fails with "The request timed out" if Socket.io is connected 【发布时间】:2017-10-01 09:00:05 【问题描述】:

如果连接了 socket.io,Alamofire 没有按预期工作,总是出现 req time out 错误。如果我禁用 Socket.io,Alamofire 就可以工作

这是我遇到的错误

Error Domain=NSURLErrorDomain Code=-1001 "The request timed out." 
UserInfo=NSUnderlyingError=0x60800044c720 
Error Domain=kCFErrorDomainCFNetwork Code=-1001 "(null)" 
UserInfo=_kCFStreamErrorCodeKey=-2102, _kCFStreamErrorDomainKey=4,
NSErrorFailingURLStringKey=https://enpoint.json, NSErrorFailingURLKey=https://enpoint.json, 
_kCFStreamErrorDomainKey=4, _kCFStreamErrorCodeKey=-2102, NSLocalizedDescription=The request timed out.

还有这个

_tcp_connection_write_eof_block_invoke Write close callback received error: [89] Operation canceled

在 git https://github.com/Alamofire/Alamofire/issues/1545 上报告了类似的问题,但没有答案。

我不知道我做错了什么!任何帮助将不胜感激

【问题讨论】:

【参考方案1】:

我能够通过更改 alamofire 参数编码来解决此问题。 默认情况下,如果您没有传递任何编码参数,Alamofire 会将编码设置为URLEncoding。 将URLEncoding 用于GETDELETE 请求。 对所有其他请求使用JSONEncoding.default(API 应该对此提供支持)。

我仍然不确定为什么它在没有套接字的情况下工作并且没有在套接字打开的情况下工作。

【讨论】:

以上是关于如果连接了 Socket.io,Alamofire 请求总是失败并显示“请求超时”的主要内容,如果未能解决你的问题,请参考以下文章

socket.io笔记三之子命名空间的socket连接

android studio连接io.socket:sokect.io-client服务器的条件

Socket.IO 连接用户数

Socket.IO 中的跨域连接

怎么使用 Socket.io 连接 WebSocket 服务

是否可以使用单向 socket.io 连接?