Желаемое поведение:
Пользователь 1 входит в систему, пользователь 1 переходит в пространство имен, называемое "пользователь 1".Может войти на столько устройств, сколько захочет.
Пользователь2, та же сделка.
Пользователь1 и пользователь2 не могут видеть пространства имен друг друга.
Любое количество пользователей должно иметь возможность сделать это
Вид тупика, каким будет лучший или идиоматический способ?Или любым способом.Я использую экспресс-сессию для аутентификации, если это помогает.
Это то, что я имею до сих пор.Библиотека «socketio-auth» является промежуточным программным обеспечением для любого соединения Websocket независимо от пространства имен.Но эта библиотека НЕ является требованием.Просто пытаюсь заставить это работать.
import { Server } from "http";
import socketio from "socket.io";
import socketioAuth from "socketio-auth";
const MongoStore = mongo(session);
dotenv.config({ path: ".env.example" });
// Create Express server
const app = express();
// Create new HTTP server for Websocket connections
const server = new Server(app);
const io = socketio(server);
server.listen(8080);
// Configure auth middleware for websocket\
socketioAuth(io, {
authenticate: async (
socket: SocketIO,
{ username, password }: { username: string, password: string },
callback: Function
) => {
try {
const user = db.findUser('User', { username }).exec();
//inform the callback of auth success/failure
if (!user) {
throw new Error("User not found");
}
// socket.on(username, ())
return callback(null, user.password === password);
} catch (error) {
return callback(new Error("User not found"));
}
},
postAuthenticate: async (
socket: SocketIO,
{ username, password }: { username: string, password: string }
) => {
// do some....thing
}
});