簡體   English   中英

Node.js-獲取所有連接的客戶端IP地址的列表?

[英]Node.js - Get list of all connected clients IP Addresses?

我正在制作一個聊天應用程序,希望監視哪些用戶在線以及哪些用戶離開。 當用戶加入Connect時,會將其IP以及用戶名等添加到mysql用戶在線表中。當用戶離開Disconnect時,它將從在線用戶中刪除其IP。

萬一發生任何不可預測的情況,我想獲取當前已連接到服務器的客戶端的所有IP地址,並將其與表中的IP地址進行比較,並以此方式排序哪些客戶端已連接,哪些未連接。

那么,如何獲取已連接客戶端的IP列表?

我要為此使用MySQL和表的原因是因為我想監視當前有多少用戶從外部PHP站點在線。 如果有更好的方法,我歡迎您提出建議。

一種解決方案是將包含所有已連接套接字的對象保持在周圍(在連接時添加,在關閉時移除)。 然后,您只需遍歷對象中的套接字即可。

或者,如果您喜歡冒險,可以使用未公開說明的方法來獲取節點中的所有活動句柄並對其進行過濾。 例:

var http = require('http');

var srv = http.createServer(function(req, res) {
  console.dir(getIPs(srv));
  // ...
});
srv.listen(8000);

function getIPs(server) {
  var handles = process._getActiveHandles(),
      ips = [];

  for (var i = 0, handle, len = handles.length; i < len; ++i) {
    handle = handles[i];
    if (handle.readable
        && handle.writable
        && handle.server === server
        && handle.remoteAddress) {
      ips.push(handle.remoteAddress);
    }
  }

  return ips;
}

暫無
暫無

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

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