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);
    });

});

现在的情况是:
用户直接关闭前台网页后,后端只能收到1001这个数字,

怎么能获取具体是哪个用户下线了呢???

阅读 7.3k
1 个回答

善用文档

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大行其道,整个小区可能都是一个IP。还是说是想给每个用户分配id,然后知道下线用户的id?那可以这样

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

当然聊天室肯定要有登录界面,onmessage取出账号存给id也可以。总之bookkeeping是要自己做的,ws包不会帮你做。

贴代码请用markdown,方便你我他。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题