国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

請(qǐng)問(wèn)大家是如何將websocket在線連接用戶(hù)列表數(shù)據(jù)和其他應(yīng)用共享呢?

小七他哥

我目前的websocket服務(wù)已經(jīng)開(kāi)發(fā)完了,不過(guò)我發(fā)現(xiàn)在將在線用戶(hù)列表的信息和其他應(yīng)用共享的時(shí)候,搞得太復(fù)雜了,我先說(shuō)說(shuō)的處理方法吧:

我是在 redis 里面存了一個(gè) sid 為 key,uid 為 value 的數(shù)組,sid是客戶(hù)端js生成的一個(gè)唯一字符串,該值在用戶(hù)登錄的有效期內(nèi)是保持不變的,uid就是數(shù)據(jù)表里的id字段值,自增數(shù)字型。

客戶(hù)端每次連接成功后都會(huì)給服務(wù)發(fā)一條消息,服務(wù)端在 onMessage 回調(diào)方法里面會(huì)將 redis 里面的數(shù)據(jù)取出,然后 json_decode 處理成數(shù)組,然后檢查當(dāng)前的sid在不在這個(gè)數(shù)組里面,不在加加進(jìn)去,加完之后又將該數(shù)組 json_encode 處理成字符串存回 redis 中去。

當(dāng)客戶(hù)端連接關(guān)閉的時(shí)候,又是 json_decode 解開(kāi),刪除對(duì)應(yīng)的 sid ,然后 json_encode 處理存回去。

我感覺(jué)我這個(gè)過(guò)程巨復(fù)雜,如果用戶(hù)不停的在網(wǎng)頁(yè)之間跳來(lái)跳去,就會(huì)不停的連接和關(guān)閉,感覺(jué)這個(gè)對(duì)服務(wù)器的壓力太大了,所以請(qǐng)教各位有沒(méi)有什么簡(jiǎn)單的方法呢?

2754 2 0
2個(gè)回答

lscho

http://doc2.workerman.net/push-in-other-project.html

GatewayClient 或許可以解決你的問(wèn)題

  • 暫無(wú)評(píng)論
wanglong126

我也有類(lèi)似的需求
我是使用的mysql數(shù)據(jù)庫(kù)
用戶(hù)上線時(shí),設(shè)置online為1,離線時(shí)設(shè)置為online為0
頁(yè)面依照是否在線和ID排序讓在線的保持在前端
最近也正在考慮,如何實(shí)現(xiàn)在接口中獲取客戶(hù)端的實(shí)時(shí)狀態(tài)

  • 小七他哥 2021-07-22

    我現(xiàn)在得到的方案是使用iframe,這樣可以解決用戶(hù)跳轉(zhuǎn)頁(yè)面頻繁的連接關(guān)閉websocket,但是這個(gè)會(huì)導(dǎo)致頁(yè)面展示的問(wèn)題,我還沒(méi)有采用。

  • wanglong126 2021-07-23

    @8083:嗯,我們的需求不太一樣,你是做頁(yè)面中數(shù)據(jù)處理的,我是做物聯(lián)網(wǎng)的,頁(yè)面查看終端設(shè)備的信息,以后可以多交流

年代過(guò)于久遠(yuǎn),無(wú)法發(fā)表回答
??