[英]Real time chat app using Polymer and node
我有一個使用Polymer作為前端的節點應用程序。 該應用程序在Nginx反向代理后面運行,該代理使用HTTP2處理HTTP等。 我正在使用帶有已簽名cookie的cookie會話。
我現在需要向該應用添加“實時聊天”; 我以為在2016年這很容易...男孩,我錯了。
我的第一個停靠港是Primus。 但是有些事情我只是不太了解:
對於我不知道的所有這些,是否有標准解決方案?
我最近參與了一個聊天項目,並在客戶端使用了Polymer。
在服務器端,您可以像我一樣使用羽毛 。 基本上,Feathers是Express的簡約包裝,並在內部使用Websockets和Socket.IO進行實時通信。 它確實運行良好,您不必擔心創建連接以及所有其他事情。 它們還有一個客戶端JS庫,您可以輕松地將其包裝到Polymer組件中。
如果重新啟動節點服務器會怎樣? 所有客戶端都需要重新連接嗎?
答案是肯定的,它們將自動重新連接。
客戶端可以“注冊”到特定的事件類型(然后應該通過Primus / Websockets / etc接收)。因此,每個打開的“選項卡”都需要有自己的ID。
如何設計Feathers應用程序真的取決於您。 據我了解,您希望在Facebook中擁有類似的標簽,這些標簽中包含不同的人或多個人。
為此,我使用了主從數據結構:
對話(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?"
}
我將這些信息存儲在數據庫( Couchbase )中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.