1

私は現在、チャット サーバー (meebo スタイル) を構築しています。

アーキテクチャはこのようなものです。

  1. libpurple上のBitlbeeはホストBにあります。データセンターの簡単なサーバーです。
  2. ユーザーは、ホストA のWeb サーバー (meebo と同様) 経由で bitlbee と通信します。この Web サーバーのバックエンドは、チャット セッションを維持します。ユーザー コマンドを適切な bitlbee コマンドに変換し、ホストAに送り返すだけです。

ここで最も重要な部分は、ホストAが組み込み Linux にデプロイされることです。

2 つの質問があります。

  1. チャット セッションを持続させるために、の使用を考えています。永続的な接続を使用してリアルタイム アプリケーションを作成する方がはるかに簡単です。しかし、そのようなプラットフォームでサポートされているかどうかは疑問です.
  2. node.js の代わりに C を使用すると (Web サーバーは使用していません)、ホストAのirc サーバーとlibircで通信できます。しかし、C ですべての Web サーバー機能 (セッション、URL/Cookie/投稿データの解析など) を実装するにはどうすればよいでしょうか?

また、私のアプローチが間違っている、またはより良いアプローチがあると思われる場合は、このアーキテクチャを改善する方法を教えてください。

注: これは大量のチャット サーバーではありません。

4

3 に答える 3

2

組み込みプラットフォームで V8/Node.js をビルドするのが難しい場合、次善の策は Node のイベント ループとプラットフォーム レイヤー ( l​​ibuv ) と HTTP パーサー ( http-parser ) を取り、両方とも C で記述し、それらを次のように使用することです。出発点。これらは Node.js のビルドに使用されるものと同じライブラリであるため、実戦テスト済みであり、求めるパフォーマンス特性が得られます。

Node.js の作成者である Ryan Dahl は、libuv と http-parser を使用して C で非同期 Web サーバーを構築する方法を正確に示しています。

于 2012-07-18T16:43:57.057 に答える
2

Bitlbee と Web ベースの IRC クライアントの間に ZNC サーバーを配置します。Bitlbee は、ユーザーがログアウトしたことがないと見なし、ユーザーが Web クライアントに再度接続するまで、ZNC はメッセージのバックログを維持できます。

于 2012-12-13T01:58:27.180 に答える
1

それがあなたの選択である場合、私はnode.jsを使用しようとしますが、それはどの組み込みシステムですか? それがより役立つことを知っているので。また、node.js のもう 1 つの利点は、セッション処理が組み込まれていることですが、C で実行したい場合は、組み込みデバイスで実行されている sqlite ラッパーを取得してセッション情報を保存できるかどうかを確認してください。

ただし、可能であれば、組み込みデバイスでの作業が少ないものに固執したり、多くのものを再発明したり、デバイスのコンパイルの問題をいじったりするのは気分が悪い.

于 2012-07-10T19:51:09.620 に答える