несколько экземпляров браузера с возможностями websocket в узле?

#javascript #node.js #browser #websocket #headless

Вопрос:

Допустим, я создаю социальное приложение. Я хочу войти в несколько учетных записей (по одной на экземпляр браузера) без пользовательского интерфейса (все через узел) и, позвонив всем соответствующим конечным точкам, войти в систему и начать общаться в чате.

Важная часть состоит в том, чтобы проверить, когда пользователь закрыл вкладку, вышел из системы или покинул группу, и, следовательно, соединение websocket закрывается.

Ответ №1:

Если я вас правильно понял. Вы хотели бы, чтобы событие на стороне сервера происходило всякий раз,когда клиент подключается или отключается, без какого-либо html, css…. или любого другого пользовательского интерфейса. Вы можете сделать это так в узле :

Для подключения вы используете :

 Server.on("connection,function(ws){some stuff...}) 

Функция, вызываемая при подключении, по умолчанию получит websocket, подключенный в качестве параметра. Я просто использую здесь лямбда-функцию, которую вы также можете вызвать, чтобы затем получить websocket в качестве параметра.

Для отключения вы помещаете функцию в функцию Server.on, чтобы отслеживать, когда клиент отключился. Подобный этому :

 Server.on("connection,function(ws){
  ws.onclose = function (ws) { 
  some stuff...
    }
}) 

Вы можете снова заменить лямбда-функцию другой.
Сервер в моем случае равен этому :

 const wsserver = require("ws").Server
const server = new wsserver({ port: someport }) 

Но это может быть по-разному.
Все, что вам нужно сделать, кроме этого, — это подключить клиента.
Я делаю это так, но это тоже может быть по-разному.

 const ws = new WebSocket("ws://localhost:someport"); 

Я надеюсь, что это будет полезно.