3

我想借助 iOS 中的“套接字编程”来实现文本聊天功能。我知道在主机和端口的帮助下连接到服务器的过程,例如:

CFReadStreamRef readStream;
CFWriteStreamRef writeStream;
CFStreamCreatePairWithSocketToHost(NULL, (__bridge CFStringRef)(@"127.1.0.0"), 80, &readStream, &writeStream);

但是我想知道如何在聊天期间在两个聊天用户之间建立套接字连接?

我必须在聊天用户之间使用服务器吗?

4

2 回答 2

4

你有两个选择。一个是使用两个客户端连接到的服务器。如果您不希望这样,则必须在客户端中实现 TCP 服务器。

所以aou绝对需要任何类型的服务器,客户端可以连接到。使用 CFNetwork 实现服务器并不复杂。只需谷歌搜索“iOS TCP Server”或类似名称。

我今天不在办公室,所以很遗憾我无法发布您可以开始的代码,对不起。

当我开始 TCP 编程时,我发现本教程非常有用。不过,Ray Wenderlich 提供了很好的教程。

如果你不让它工作,我会在星期一回到我的代码库时发布一些代码:)

http://www.raywenderlich.com/3932/how-to-create-a-socket-based-iphone-app-and-server

于 2013-11-29T10:13:11.263 回答
2

您需要一个客户端可以连接到的服务器。我建议使用发布-订阅模式。

发布-订阅是一种消息传递模式,其中消息的发送者(称为发布者)不对将消息直接发送给特定的接收者(称为订阅者)进行编程,而是将发布的消息表征为类,而不知道可能存在哪些订阅者(如果有的话) . 类似地,订阅者表示对一个或多个类感兴趣,并且只接收感兴趣的消息,而不知道有哪些发布者(如果有的话)。资料来源:维基百科

用户 A 的应用订阅主题“/topic/user-a”,用户 B 的应用订阅主题“/topic/user-b”,并将数据发布到其他用户的主题。

对于服务器端,您可以使用可用的选项,如 Socket.io、Mosquitto.org、RabbitMQ。示例聊天 SDK 代码为 iOS:https ://github.com/AppLozic/Applozic-iOS-SDK

如果您打算使用 MQTT,可以使用https://github.com/ckrey/MQTT-Client-Framework

于 2016-04-26T19:44:25.123 回答