Лучший подход для доступа к объекту сокета в нескольких файлах в узле JS? - PullRequest
0 голосов
/ 03 октября 2019

Я учусь реализовывать сокеты в узле js. Для этого я использовал socket.io. Обычно для настройки сокета в проекте нам нужен сервер или объект http.

Так что я работаю с Express и для создания http-сервера он определен в bin/wwww, как показано ниже

var server = http.createServer(app);

// Implement socket 
    var vm = require('../vmcontroller.js')
    var docker = require('../docker.js')

    var io = require('socket.io')(server);

    io.on('connection', function (socket) {
      vm.getSocket(io, socket)
      docker.getSocket(io, socket)
      socket.on('disconnect', function () {
      });
    })

Чтобы получить доступ к объекту сокета в каждом файле, я создал функцию в каждомфайл с именем getSocket(io, socket) и передачей значений. в этом конкретном файле я объявил функцию и глобальную переменную сокета, как показано ниже

//vmcontroller.js
var globalSocket;
---------
---------
//some code 
function emitVmEvent() {
globalSocket.emit("vm_created",{error:false,message:'vm creation on cloud succeded'})
}
---------
---------

function getSocket(io,socket) {
globalSocket = socket;
}

Итак, если мой подход подходит для нескольких пользователей, отправляющих запросы одновременно? Я хочу, чтобы, если запрос 1 имеет объект сокета A, то он должен быть связан только с этим запросом, к нему не должен быть доступ никаким другим запросом. Так как объект сокета является глобальным в файле, поэтому он не должен быть общим для запросов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...