iOS WebSocket 未使用 SocketRocket 连接到服务器

Posted

技术标签:

【中文标题】iOS WebSocket 未使用 SocketRocket 连接到服务器【英文标题】:iOS WebSocket not connecting to Server using SocketRocket 【发布时间】:2014-12-28 08:42:51 【问题描述】:

我正在创建一个聊天应用程序,它的 WebSocket 服务器是用 java 编写的。 对于 WebSocket 客户端,我正在使用 SocketRocket 库。

当我尝试从 localhost127.0.0.1 连接时,一切正常。 但是当我尝试使用公共 IP 连接它时,它在- (void) webSocket:(SRWebSocket *)_webSocket didFailWithError:(NSError *)error 方法中出现以下错误:

Error Domain=NSPOSIXErrorDomain Code=57 "The operation couldn’t be completed. Socket is not connected"

这是我如何初始化SRWebSocket 对象:

webSocket = [[SRWebSocket alloc] initWithURL:[NSURL URLWithString:@"ws://IP_ADDRESS:8080/ChatWebSocket/chat/12345"]];  
// connects successfully when IP_ADDRESS = localhost or 127.0.0.1 
// gives 'Socket is not connected' error when IP_ADDRESS = some public IP address

我也尝试使用initWithURLRequest: 初始化SRWebSocket

P.S 我还测试并验证了 WebSocket 服务器可以通过其公共 IP 地址从 javascript 代码访问。

因此,我认为问题出在客户端。

任何帮助将不胜感激。 在此先感谢

【问题讨论】:

【参考方案1】:

经过近 2 天的研究,我终于意识到问题仅出现在模拟器上。 当我在 iPod touch 上测试相同的代码时,它就像一个魅力! :)

【讨论】:

以上是关于iOS WebSocket 未使用 SocketRocket 连接到服务器的主要内容,如果未能解决你的问题,请参考以下文章

Spring 4 websocket和stomp - 未到达控制器

Spring Websocket ChannelInterceptor 未触发 CONNECT 事件

数据显示在 websocket 响应中,但未显示在已解决的承诺中

通过3G连接的WebSocket

Websocket 离子 3 角 4

使用 GraphQL 的 AKS 上的 Websocket 未连接