鍍金池/ 問答/HTML/ nodejs做后端,用websocket寫聊天室,怎么獲取連接用戶的ip呢?

nodejs做后端,用websocket寫聊天室,怎么獲取連接用戶的ip呢?

1.nodejs里用的是ws那個庫
2.用戶斷開連接的代碼是這樣寫的

var WebSocketServer = require('D:/0.ProgramFiles/2.Devel/4.NodeJs/node_modules/ws').Server;
var wss = new WebSocketServer({port: 8888});
var userList = [];

wss.on('connection', function (ws,req) {
    // console.log(req.connection.remoteAddress)
    console.log(getUUID());

    ws.on('message', function (message) {
        console.log("收到消息:" + message);
        wss.clients.forEach(function each(client) {
            client.send(message);
        });
    });

    ws.on('close', function (message) {
        console.log(id);
    });

});

現(xiàn)在的情況是:
用戶直接關(guān)閉前臺網(wǎng)頁后,后端只能收到1001這個數(shù)字,

怎么能獲取具體是哪個用戶下線了呢???

回答
編輯回答
蔚藍(lán)色

善用文檔

https://www.npmjs.com/package...

const WebSocket = require('ws');
 
const wss = new WebSocket.Server({ port: 8080 });
 
wss.on('connection', function connection(ws, req) {
  const ip = req.connection.remoteAddress;
});

但是IP從來都不適合用來做用戶鑒別,畢竟NAT大行其道,整個小區(qū)可能都是一個IP。還是說是想給每個用戶分配id,然后知道下線用戶的id?那可以這樣

wss.on('connection', ws => {
  const id = getUUID();
  
  ws.on('close', (code, message) => {
    console.log(`user ${id} has left`);
  };
});

當(dāng)然聊天室肯定要有登錄界面,onmessage取出賬號存給id也可以??傊産ookkeeping是要自己做的,ws包不會幫你做。

貼代碼請用markdown,方便你我他。

2017年7月2日 03:19