第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何將客戶端的數(shù)據(jù)存儲(chǔ)在服務(wù)器中

如何將客戶端的數(shù)據(jù)存儲(chǔ)在服務(wù)器中

一只名叫tom的貓 2022-10-13 16:27:47
當(dāng)客戶端登錄時(shí),該客戶端的數(shù)據(jù)將存儲(chǔ)在服務(wù)器中以供進(jìn)一步使用,但是當(dāng)新客戶端登錄時(shí),舊客戶端的數(shù)據(jù)將被新客戶端替換。因此,如果我將客戶的數(shù)據(jù)存儲(chǔ)在var或let中,它只屬于一個(gè)特定的客戶。我這樣做是為了減少新 API 調(diào)用的加載時(shí)間,并在重新加載網(wǎng)頁(yè)時(shí)從活動(dòng)用戶列表中刪除用戶(因?yàn)?socket.io 再次使用新的 socketID 連接)關(guān)于我的代碼,這是我在網(wǎng)站啟動(dòng)時(shí)的第一個(gè) API 調(diào)用var list;var find = (req, res) =>  new Promise((resolve, reject) => {    user.find({}, { _id: 1, name: 1, email: 1 }).exec(async (err, user) => {      if (err) return res.json(err);      let p = await getfulluser(req.User._id);       list = user.filter((u) => u._id != req.User._id);      for (let i = 0; i < p.messages.length; i++) {        for (var e = 0; e < list.length; e++) {          if (list[e]._id.equals(p.messages[i]._id)) {            list.splice(e, 1);            break;          }        }      }      res.json(list);      resolve(list);    });  });這里那些' for '循環(huán)是耗時(shí)的事情,所以對(duì)于下一個(gè)API調(diào)用,我使用這個(gè)方法來(lái)獲得更好的性能exports.refreshfind = async (req, res) => {  if (list) {    let { id } = req.body;    for (let e = 0; e < list.length; e++) {      if (list[e]._id.equals(id)) {        list.splice(e, 1);        res.json(list);        break;      }    }  } else {    await find(req, res);  }};這種方法比前一種方法快得多,但要做到這一點(diǎn),我必須將“列表”存儲(chǔ)在服務(wù)器中。這里的問(wèn)題是當(dāng)一個(gè)新用戶(假設(shè)它是user1)登錄時(shí),第一個(gè) API 將被調(diào)用,' find ' 函數(shù)將被執(zhí)行,它將生成 ' user1 ' 的 ' list '。這里一切都很好現(xiàn)在一個(gè)已經(jīng)登錄的老用戶(假設(shè)它是user2)在不同的網(wǎng)頁(yè)中調(diào)用 API。服務(wù)器應(yīng)該使用“user2”的“l(fā)ist”執(zhí)行“refreshfind” 。但是因?yàn)樵凇?user2 ”調(diào)用 API 之前, “ user1 ”已登錄,執(zhí)行“ find ”并為“ user1 ”創(chuàng)建了一個(gè)“ list ” ,現(xiàn)在“ user1 ”的“ list ”正在由“ user2 ”調(diào)用的 API的“ refreshfind ”更新以同樣的方式在網(wǎng)頁(yè)重新加載時(shí)從“活動(dòng)用戶列表”(數(shù)組)中刪除用戶。當(dāng)網(wǎng)頁(yè)重新加載時(shí),socket.io 執(zhí)行斷開(kāi)連接并使用新的 socket.id 重新連接 socket.on("disconnect", ()...因此,刪除重新加載頁(yè)面的用戶的功能是var userdata = require("./controllers/user"); socket.on("disconnect", () => {    if (userdata !== undefined && users !== undefined) {      for (e = 0; users.length; e++) {        if (users[e].userid === userdata.userdata._id) {          users.splice(e, 1);          break;        }      }    }    console.log(users);    console.log("disconnected");  });
查看完整描述

1 回答

?
手掌心

TA貢獻(xiàn)1942條經(jīng)驗(yàn) 獲得超3個(gè)贊

服務(wù)器僅適用于客戶端隊(duì)列中的一個(gè)客戶端。當(dāng)您為客戶端存儲(chǔ)變量(var 或 let)時(shí),當(dāng)新客戶端到來(lái)時(shí),這些變量將為新客戶端更改。因此,您不應(yīng)該在變量中存儲(chǔ)有關(guān)客戶端的任何內(nèi)容

您可以使用Redis存儲(chǔ)來(lái)自服務(wù)器的每個(gè)客戶端的數(shù)據(jù),它比 HTTP 請(qǐng)求更快,因此您將獲得更好的性能。


查看完整回答
反對(duì) 回復(fù) 2022-10-13
  • 1 回答
  • 0 關(guān)注
  • 123 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)