#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");
Я надеюсь, что это будет полезно.