2012-02-21 13 views
5

私はC/C++またはPythonで簡単なWebベースのチャットサーバーを構築する必要があるNetworkingクラスの宿題プロジェクトに取り組んでいます。 Pythonを選んだのは、プロジェクトを実装するのが簡単な言語だと思ったからです。プロジェクトで必要とされる機能をすべて備えていない可能性が高いため、Web上で見つけた素材を使用できます。実際、教授は私たちにチュートリアルを含むウェブからの資料を使用するよう実際に奨励しました。彼は、ネットワークコードを実装する能力と、それに関連するプロセスを完全に理解するかどうかをコードする能力について私たちをテストしていません。PythonでWebベースのチャットサーバーのチュートリアル

プロジェクトは複数のクライアントを処理する必要があり、複数のブラウザ、Chrome、FireFoxなどをサポートできる必要があります。接続するには、ブラウザのIPアドレスとポートを入力できる必要があります。私は仕事のための資料を見つけることができません。私はCで少し見つけましたが、Pythonでは何も見つかりませんでした。

誰もが完全なチュートリアルを知っていますか?クライアント/サーバーのコマンドベースのチャットはたくさんありますが、ブラウザベースのチャットはありません。

答えて

3

TornadIOから見ることができます。そのSocket.ioのpythonの実装は、Tornadoのために、竜巻はイベント駆動のpython Webサーバーです。

https://github.com/MrJoes/tornadio2

http://www.tornadoweb.org/

Socket.ioサーバーへのWebクライアントからのソケット/ソケットなどの接続にクロスブラウザソリューションです。これは、pub-subサブスクリプションとメッセージをサポートしているので、チャットサーバーを行うために必要なすべてのツールを提供します。あなたの目的のためにsocket.ioを使用するのは、Websocket、Flashsocket、xhr polling、jsonp、htmlfileのように、新しいブラウザと古いブラウザがすべて通信できるようにするためです。それらはすべて、クライアントに同じように見える方法で試行され、使用されます。

Tornadio2は、新しいSocket.io 0.7+と互換性のある新しいバージョンです。このバージョンでは、0.6との互換性を失った多くの機能が追加されました。しかし、元TornadIOはあなたが始めるために新しいバージョンにはかなり簡単にレビューして変換することができチャットルームの例が含まれています

https://github.com/MrJoes/tornadio/tree/master/examples/chatroom

+0

@jdiこれはやや古い投稿ですが、この「tornadoio」を使ってデータベースに追加されたメッセージをどのように保存するかについてのあなたの考えはどうですか?スレッドやマルチプロセッシングモジュールを組み込んで、複数のプロセスを持つ必要がありますか?チャット用か、DB問合せ用か?または、これを行うためのスムーズな方法がありますか? – JohnZ

+0

@ JohnZ:ワーカースレッドが 'queue.get'でブロックされているルートをたどり、メッセージを受け取ったらデータベースに追加します。そうすれば、別のスレッドからメッセージをキューに入れてブロックすることはできません。 – jdi

1

私の知る限り理解できるように、与えられた在宅ワークは、人々が取得せていますnetworkプログラミングで活動を手伝ってください。だから、www.twistedmatrix.comを見て、
ツイスト Chat comet site using python and twistedのいくつかの例を使用する場合、
http://lists.canonical.org/pipermail/kragen-hacks/2005-April/000409.html
http://code.google.com/p/twisted-chat-example/がかかる場合があります。

これはプレーンソケットプログラミングを使用しています。http://code.activestate.com/recipes/531824-chat-server-client-using-selectselect/
http://ankurs.com/2008/05/creating-a-simple-chat-application-with-python/です。

これはgeventに基づいています。

ソケットプログラミングを使用しない単純なチャットルームエミュレーションの場合、ここにはgummiの例があります。

実際の使用例はsourceforgeです。

関連する問題