【发布时间】:2015-03-06 03:16:45
【问题描述】:
在 iOS 客户端上,我使用的是 Square 的 SocketRocket:https://github.com/square/SocketRocket
在我所见的任何地方,我都发现了基于从浏览器访问或在数据库中查询的 Web 应用程序的 Websocket 库的比较,但对于 iOS 智能手机应用程序的客户端还没有。
客户端将根据请求通过应用程序连接到远程服务器(即连接不是“始终在线”或通过移动浏览器或代理或 GameCenter 完成),并且一旦连接,就与其他客户端配对在两人“游戏”的情况下。在比赛结束之前,连接需要保持,并且服务器将负责计时每个用户的回合并从/向每个用户接收和发出命令,有点像回合制游戏,除了每个回合都有一个服务器管理时限。一场比赛结束后(一般为 15-20 分钟),如果用户不想再与另一个随机对手进行另一场比赛,则连接将被关闭并用户注销;然后,托管服务器(运行 Node.js 和 Websocket 库)会将想要继续的用户与另一个用户匹配。
我考虑过的一些选项包括 Socket.IO 1.0:http://socket.io/ 袜子:https://github.com/sockjs ws:https://github.com/einaros/ws nodejs-websocket:https://www.npmjs.com/package/nodejs-websocket
但从https://medium.com/@denizozger/finding-the-right-node-js-websocket-implementation-b63bfca0539 那里听说 Socket.IO 不是针对大量用户流量的最佳选择(我预计任何时候都会有超过 300 个用户请求匹配),并且 Sockjs 没有一些命令查询功能,但在智能手机或 iOS 设备(而不是浏览器)的上下文中,无论哪种情况,在任何情况下都没有找到明确的答案。
问题是 Node.js 服务器 Websocket 库与运行 SocketRocket 的 iOS 客户端的稳定性/可扩展性/复杂性问题可能表现得最好还是接口最少? SocketRocket wiki 本身没有帮助,因为它使用基于 Python/Go 的服务器端测试。
编辑:可能有用的资源: http://www.teehanlax.com/blog/how-to-socket-io-swift/
唯一缺少的是对其他潜在 websocket API 的比较或讨论,而不仅仅是 Socket.IO。但这是一个开始,因为它似乎可以与最新的 iOS、SocketRocket 和 Socket.IO 版本一起使用。
【问题讨论】:
标签: javascript ios node.js websocket server