Saving open sockets (or pointers to sockets) Node JS

I have a socket based server that uses Einaros WS on Node JS. I think my question applies regardless of the socket library choice. Currently, whenever I get a new connection I store each socket object in an array like this:

var WebSocketServer = require("ws").Server;
...
var server  = require('http').createServer(app);
...
var wss = new WebSocketServer({server: server});


var clients = [];
wss.on("connection", function(ws) {
console.log("websocket connection open");

  ws.on("message", function(message) {
    {
    message = JSON.parse(message);
    switch (message.type) {
        case "START":
        {
            ws.user_id = message.user_id;
            clients[ws.user_id]=ws;
        }
    ...

This means for each open connection I am storing what I believe to be a fairly large socket object. Is there a way to store an identifier or pointer to this object instead of storing the entire socket in an array this way? How do systems that can handle a very large number of open connections store / remember open sockets?

The "ws" variable is just a reference to the websocket object, not a copy of the structure, so it is no more expensive than storing any other object (or primitive) in an array.