Я делаю приложение с socket.io. Я пытаюсь отобразить список подключенных пользователей на двух разных веб-страницах. Вот мой код -
Сервер. js файл -
const express = require('express');
const ejs = require('ejs');
const app = express();
app.set('view engine','ejs');
app.use(express.static('public'));
server = app.listen(3000,function(){
console.log("Server running");
});
const io = require('socket.io')(server);
var users = [];
io.on('connection',function(socket){
socket.on('new-user',function(name){
users.push(name);
io.sockets.emit('user-connected',users);
});
socket.on('fetch-user-list',function(){
io.sockets.emit('user-list',users);
})
});
Теперь у меня есть два HTML файла, каждый из которых связан с отдельным файлом js -
file1. js -
var socket = io.connect();
const name = prompt('What is your name?');
socket.emit('new-user',name);
container = document.getElementById('container');
socket.on('user-connected',function(users){
container.innerHTML = '';
users.forEach(element => {
const listElement = document.createElement('li');
listElement.innerText = element;
container.append(listElement);
});
});
Таким образом, это распечатывает всех подключенных пользователей на подключенной странице HTML и является желаемым выводом.
Но когда я пытаюсь использовать пользователи массив с сервера. js снова для второго js файла, например, -
file2. js -
var socket = io.connect();
socket.emit('fetch-user-list');
container = document.getElementById('container');
socket.on("user-list",function(users){
console.log(users);
});
Я получаю пустых пользователей массив. Указана ли страница событий сокета c и каким-то образом мой пользовательский массив сбрасывается в пустой массив после ухода с первой страницы? Мы будем благодарны за любую помощь.
Примечание: - Второй файл js выполняется после первого.