最近私はチャットプロジェクトで働いていましたが、クライアント側でもPolymerを使用しました。
サーバー側では、私がしたようにFeathersを使用できます。基本的にFeathersは、Expressのミニマリストラッパーで、WebsocketとSocket.IOをリアルタイムコミュニケーションのフードとして使用しています。それは本当にうまくいきます。接続の作成やすべてのことを心配する必要はありません。また、クライアントサイドのJSライブラリがあり、Polymerコンポーネントを簡単にラップすることができます。
ノードサーバーを再起動するとどうなりますか?すべてのクライアントが再接続する必要がありますか?
答えははいです。自動的に再接続します。
クライアントは、特定のイベントタイプに「登録」することができます(その後、プライマス/ WebSocketを/などを経由して受信することになっています。)ので、それぞれが「タブ」は、自身のIDが必要になります開いた...
あなたのFeathersアプリのデザイン方法はあなた次第です。あなたが理解しているように、あなたは異なる人や複数の人々とこれらのタブを持っているFacebookのようなものが欲しい。このため
、Iは主従データ構造を使用する:
会話(1)···(N)メッセージ
例:
会話
{
"doc_created_at": "2016-09-21T07:30:02.289Z",
"doc_created_by": "299009a4-5423-4cdd-9e1a-59fca59404ae",
"doc_id": "00f61c96-4bc6-4c46-a22d-de246314695c",
"doc_patched_at": "2016-10-27T11:35:53.599Z",
"doc_type": "conversation",
"participants": [
{
"id": "635b05bc-ae23-4c5d-9ee5-87e7da2cac15",
"name": "User 1"
},
{
"id": "299009a4-5423-4cdd-9e1a-59fca59404ae",
"name": "User 2"
}
],
"sender": {
"id": "299009a4-5423-4cdd-9e1a-59fca59404ae",
"name": "User 2"
},
"last_message": "How are you?"
}
を
メッセージ#1
{
"conversation_id": "00f61c96-4bc6-4c46-a22d-de246314695c",
"doc_created_at": "2016-09-23T06:10:28.727Z",
"doc_created_by": "299009a4-5423-4cdd-9e1a-59fca59404ae",
"doc_id": "00e5b904-c9fa-46f1-b108-9fc9a15d11fc",
"doc_type": "message",
"participants": [
{
"id": "635b05bc-ae23-4c5d-9ee5-87e7da2cac15",
"name": "User 1"
},
{
"id": "299009a4-5423-4cdd-9e1a-59fca59404ae",
"name": "User 2"
}
],
"sender": {
"id": "299009a4-5423-4cdd-9e1a-59fca59404ae",
"name": "User 2"
},
"message": "Hi"
}
メッセージ#2
{
"conversation_id": "00f61c96-4bc6-4c46-a22d-de246314695c",
"doc_created_at": "2016-09-21T07:32:08.312Z",
"doc_created_by": "299009a4-5423-4cdd-9e1a-59fca59404ae",
"doc_id": "2a6c2f91-04a8-4447-a0a6-4b229d523afc",
"doc_type": "message",
"participants": [
{
"id": "635b05bc-ae23-4c5d-9ee5-87e7da2cac15",
"name": "User 1"
},
{
"id": "299009a4-5423-4cdd-9e1a-59fca59404ae",
"name": "User 2"
}
],
"sender": {
"id": "299009a4-5423-4cdd-9e1a-59fca59404ae",
"name": "User 2"
},
"message": "How are you?"
}
Iは、データベース(Couchbase)、これらの情報を記憶します。
詳細が必要な場合はお知らせください。 – Hunex
可能な唯一の純粋な答えであるので、この回答を受け入れてください。しかし、私は[自分のサーバーコード](https://github.com/mercmobily/hotplate/blob/master/core_modules/hotCoreComet/lib/hotCoreComet.js)と[自分のクライアントライブラリ](https: /github.com/mercmobily/hotplate/blob/master/core_modules/hotCoreComet/lib/comet-client.js)、クライアントライブラリを3つのポリマーウィジェットでラップしました... – Merc