簡體   English   中英

將TCP會話保存在Node.js / Redis中?

[英]Save tcp sessions in nodejs / redis?

我目前正在通過開發基於TCP的小型聊天應用程序(經典案例)來學習node.js。

我現在想做的就是將該應用程序擴展為使用靜態用戶:

  • 圍繞消息傳遞的所有邏輯都應基於用戶而不是會話。
  • 因此,每個會話都需要與對用戶的引用一起保存(以便應用程序可以基於用戶名在正確的會話中發送消息)。
  • 我已經研究過Redis來存儲這些數據,但到目前為止還沒有成功。

      tcpServer.on 'connection', (tcpSocket) -> tcpSocket.write "Welcome" redis.hmset("sessions", userid, tcpSocket) tcpSocket.on "data", (data) -> redis.hvals "sessions", (err, repl) -> repl.forEach (reply, y) -> reply.Write("Data is written to clients!") tcpServer.listen 7000 

當前錯誤消息:TypeError:對象[object Object]沒有方法'write'

這表明我現在無法嘗試存儲tcpSocket。 有人可以告訴我是否可以做些小的調整以實現此目的,還是我應該重新考慮此解決方案?

Redis支持很少的數據類型:字符串,列表,集合,排序列表和哈希表。 而已。 日期等其他一些類型可以輕松地轉換為字符串或從字符串轉換為字符串,因此也可以使用。 但是socket是一個復雜的內部對象,因此您很可能無法將其轉換為字符串,因此無法存儲在Redis中。

由於套接字對象要存儲在Redis中很復雜,因此看來方法是根據下面的鏈接向該對象添加標識符。

然后,當然可以將此標識符保存在數據庫中,以在不同對象等之間創建實體。

如何使用Node.js唯一標識套接字

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM