我想在iOS中借助"套接字编程"实现文本聊天功能。我知道在主机和端口的帮助下连接到服务器的过程,比如:
CFReadStreamRef readStream;
CFWriteStreamRef writeStream;
CFStreamCreatePairWithSocketToHost(NULL, (__bridge CFStringRef)(@"127.1.0.0"), 80, &readStream, &writeStream);
但我想知道如何在聊天过程中在两个聊天用户之间建立套接字连接
我必须在聊天用户之间使用服务器吗
您有两个选项。一个是使用两个客户端连接的服务器。如果你不想这样,你必须在客户端中实现TCP服务器。
因此,你需要任何类型的服务器,客户端可以连接到。使用CFNetwork实现服务器并不复杂。只需在谷歌上搜索"iOS TCP服务器"或类似内容。
我今天不在办公室,所以很遗憾我不能在你可以开始的地方张贴代码,对不起。
当我开始TCP编程时,我发现这个教程非常有用。Ray Wenderlich制作了很好的教程。
如果你不能让它工作,我会在周一回到我的代码库时发布一些代码:)
http://www.raywenderlich.com/3932/how-to-create-a-socket-based-iphone-app-and-server
您需要一个客户端可以连接到的服务器。我建议使用发布-订阅模式。
发布-订阅是一种消息传递模式,消息的发送者(称为发布者)不将消息编程为直接发送给特定的接收者(称为订阅者),而是在不知道可能存在哪些订阅者(如果有的话)的情况下将发布的消息定性为类。类似地,订阅者表示对一个或多个类感兴趣,并且只接收感兴趣的消息,而不知道有哪些发布者(如果有的话)。来源:维基百科
将用户A的应用程序订阅到主题"/topic/user-A",将用户B的应用程序预订到主题"/topic/user-B",并将数据发布到其他用户的主题。
对于服务器端,您可以使用Socket.io、Mosquiitt.org、RabbitMQ等可用选项。示例聊天SDK代码是iOS:https://github.com/AppLozic/Applozic-iOS-SDK
如果您计划使用MQTT,您可以使用https://github.com/ckrey/MQTT-Client-Framework