我正在开发一种大型多人棋盘游戏。我的解决方案是在服务器上使用node.js socket.io。我需要一个实现目标-C socket的解决方案,该socket将与socket.io通信,以发送和接收作为字符串的JSON对象。我不想使用带有websocket的webkit。是否有任何可能性?服务器将保存游戏状态,iPhone客户端将向服务器发送操作并接收来自服务器的更改。
我正在开发一种大型多人棋盘游戏。我的解决方案是在服务器上使用node.js socket.io。我需要一个实现目标-C socket的解决方案,该socket将与socket.io通信,以发送和接收作为字符串的JSON对象。我不想使用带有websocket的webkit。是否有任何可能性?服务器将保存游戏状态,iPhone客户端将向服务器发送操作并接收来自服务器的更改。
2015/03/19编辑: Socket.IO的开发人员创建了自己的iOS库,支持Socket.IO v1.0+。在此处获取:https://github.com/socketio/socket.io-client-swift
旧答案
我更新了fpotter的socket.io库,使其与版本0.7.2 - 0.9.x兼容。
它支持sockets和XHR polling。
https://github.com/pkyeck/socket.IO-objc
或许您想查看一下。
或者看看cocoaasyncsocket:
CocoaAsyncSocket 支持 TCP 和 UDP。AsyncSocket 类是用于 TCP 的, 而 AsyncUdpSocket 类是用于 UDP 的。下面介绍了每个类。
AsyncSocket 是一个 TCP/IP 套接字 网络库,它包装了 CFSocket 和 CFStream。它提供异步 操作,并具有原生的 Cocoa 类 支持代理。以下是其主要特点:
排队非阻塞读取和写入,带有可选超时。你告诉它要读或写什么,它会在完成后调用你。
自动套接字接受。如果你告诉它接受连接,它将为每个连接调用新的自身实例。当然,您可以立即断开它们。
支持代理。错误、连接、接受、读取完成、写入完成、进度和断开连接都会调用您的代理方法。
基于运行循环,而不是线程。虽然您可以在主线程或工作线程上使用它,但您并不需要这样做。它使用 NSRunLoop 异步调用代理方法。代理方法包括一个套接字参数,允许您区分多个实例。
自包含在一个类中。你不需要摆弄流或套接字。该类处理所有这些。
支持 IPv4 和 IPv6 上的 TCP 流。
该库是公共领域, 最初由 Dustin Voss 编写。现在 提供在公共环境中,以允许 和鼓励其继续支持。
AsyncUdpSocket 是一个 UDP/IP 套接字网络库,它包装了 CFSocket。它几乎与 TCP 版本完全相同,但专为 UDP 设计。 这包括排队非阻塞发送/接收 操作、完整的代理支持、 基于运行循环的、自包含类、 以及对 IPv4 和 IPv6 的支持。
如果您计划开发本地应用程序,我建议查看苹果的流媒体和套接字文档。 http://developer.apple.com/library/ios/#documentation/cocoa/Conceptual/Streams/Streams.html