真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

go和javascript怎么構(gòu)建一個(gè)即時(shí)消息應(yīng)用

這篇“go和javascript怎么構(gòu)建一個(gè)即時(shí)消息應(yīng)用”文章的知識點(diǎn)大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細(xì),步驟清晰,具有一定的借鑒價(jià)值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“go和javascript怎么構(gòu)建一個(gè)即時(shí)消息應(yīng)用”文章吧。

創(chuàng)新互聯(lián)公司服務(wù)項(xiàng)目包括沐川網(wǎng)站建設(shè)、沐川網(wǎng)站制作、沐川網(wǎng)頁制作以及沐川網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,沐川網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到沐川省份的部分城市,未來相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

我們將會(huì)用 CockroachDB 作為 SQL 數(shù)據(jù)庫,用 Go 作為后端語言,并且用 JavaScript 來制作 web 應(yīng)用。

CREATE TABLE users (    id SERIAL NOT NULL PRIMARY KEY,    username STRING NOT NULL UNIQUE,    avatar_url STRING,    github_id INT NOT NULL UNIQUE);

顯然,這個(gè)應(yīng)用需要一些用戶。我們這里采用社交登錄的形式。由于我選用了 GitHub,所以這里需要保存一個(gè)對 GitHub 用戶 ID 的引用。

CREATE TABLE conversations (    id SERIAL NOT NULL PRIMARY KEY,    last_message_id INT,    INDEX (last_message_id DESC));

每個(gè)對話都會(huì)引用最近一條消息。每當(dāng)我們輸入一條新消息時(shí),我們都會(huì)更新這個(gè)字段。我會(huì)在后面添加外鍵約束。

… 你可能會(huì)想,我們可以先對對話進(jìn)行分組,然后再通過這樣的方式獲取最近一條消息。但這樣做會(huì)使查詢變得更加復(fù)雜。

CREATE TABLE participants (    user_id INT NOT NULL REFERENCES users ON DELETE CASCADE,    conversation_id INT NOT NULL REFERENCES conversations ON DELETE CASCADE,    messages_read_at TIMESTAMPTZ NOT NULL DEFAULT now(),    PRIMARY KEY (user_id, conversation_id));

盡管之前我提到過對話只會(huì)在兩個(gè)用戶之間進(jìn)行,但我們還是采用了允許向?qū)υ捴刑砑佣鄠€(gè)參與者的設(shè)計(jì)。因此,在對話和用戶之間有一個(gè)參與者表。

為了知道用戶是否有未讀消息,我們在消息表中添加了“讀取時(shí)間”(messages_read_at)字段。每當(dāng)用戶在對話中讀取消息時(shí),我們都會(huì)更新它的值,這樣一來,我們就可以將它與對話中末尾一條消息的“創(chuàng)建時(shí)間”(created_at)字段進(jìn)行比較。

CREATE TABLE messages (    id SERIAL NOT NULL PRIMARY KEY,    content STRING NOT NULL,    user_id INT NOT NULL REFERENCES users ON DELETE CASCADE,    conversation_id INT NOT NULL REFERENCES conversations ON DELETE CASCADE,    created_at TIMESTAMPTZ NOT NULL DEFAULT now(),    INDEX(created_at DESC));

盡管我們將消息表放在末尾,但它在應(yīng)用中相當(dāng)重要。我們用它來保存對創(chuàng)建它的用戶以及它所出現(xiàn)的對話的引用。而且還可以根據(jù)“創(chuàng)建時(shí)間”(created_at)來創(chuàng)建索引以完成對消息的排序。

ALTER TABLE conversationsADD CONSTRAINT fk_last_message_id_ref_messagesFOREIGN KEY (last_message_id) REFERENCES messages ON DELETE SET NULL;

我在前面已經(jīng)提到過這個(gè)外鍵約束了,不是嗎:D

有這四張表就足夠了。你也可以將這些查詢保存到一個(gè)文件中,并將其通過管道傳送到 Cockroach CLI。

首先,我們需要啟動(dòng)一個(gè)新節(jié)點(diǎn):

cockroach start --insecure --host 127.0.0.1

然后創(chuàng)建數(shù)據(jù)庫和這些表:

cockroach sql --insecure -e "CREATE DATABASE messenger"cat schema.sql | cockroach sql --insecure -d messenger

以上就是關(guān)于“go和javascript怎么構(gòu)建一個(gè)即時(shí)消息應(yīng)用”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對大家有幫助,若想了解更多相關(guān)的知識內(nèi)容,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


本文名稱:go和javascript怎么構(gòu)建一個(gè)即時(shí)消息應(yīng)用
網(wǎng)站鏈接:http://weahome.cn/article/jocjsg.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部