3

iOS の「ソケット プログラミング」を使用して、テキスト チャット機能を実装したいと考えています。次のようなホストとポートを使用してサーバーに接続するプロセスについて知っています。

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

しかし、チャット中に2人のチャットユーザー間でソケット接続を行う方法を知りたいですか?

チャット ユーザー間でサーバーを使用する必要がありますか?

4

2 に答える 2

4

2 つのオプションがあります。1 つは、2 つのクライアントが接続するサーバーを使用しています。それを望まない場合は、クライアントに TCP サーバーを実装する必要があります。

したがって、クライアントが接続できるあらゆる種類のサーバーが絶対に必要です。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

クライアントが接続できるサーバーが必要です。パブリッシュ・サブスクライブ・パターンを使用することをお勧めします。

パブリッシュ–サブスクライブは、パブリッシャーと呼ばれるメッセージの送信者が、サブスクライバーと呼ばれる特定の受信者にメッセージを直接送信するようにプログラムするのではなく、パブリッシュされたメッセージをクラスに特徴付けるメッセージング パターンです。 . 同様に、サブスクライバーは 1 つ以上のクラスに関心を示し、関心のあるメッセージのみを受信します。存在する場合、どのパブリッシャーがあるかはわかりません。出典:ウィキペディア

ユーザー 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 に答える