Я пытался запрограммировать простое веб-приложение, используя C бэкэнд для Ti c -Ta c -Toe, используя Node. Он работает, но работает только тогда, когда по ссылке находится один пользователь. Если пользователей больше, чем один, запросы веб-сайта от всех пользователей кажутся конфликтными, и игра разваливается. Мне было интересно, как я могу разделить запросы на стороне сервера и клиента. Я пытался разветвлять весь процесс узла каждый раз, когда запрашивается веб-сайт, я также пытался использовать случайные конечные точки для каждого пользователя, чтобы у каждого пользователя была уникальная конечная точка для запросов, необходимых для игры. Я также попытался дать каждому пользователю уникальный идентификатор сеанса, но я не уверен, что это обязательно сработало. Вот код моего приложения. js файл, который запускает сервер:
const ffi = require('ffi-napi');
const express = require("express");
const app = express();
const path = require("path");
let sharedLib = ffi.Library('./gameProgram', {
'getTheMove': ['string', ['int']],
'resetGame': ['int', ['int']]
});
app.get('/',function(req,res){
res.sendFile(path.join(__dirname+'/public/index.html'));
});
app.get('/reroute.js',function(req,res){
res.sendFile(path.join(__dirname+'/public/reroute.js'));
});
app.get('/style.css',function(req,res){
res.sendFile(path.join(__dirname+'/public/style.css'));
});
app.get('/game' ,function(req,res) {
res.sendFile(path.join(__dirname+'/public/game.html'));
});
app.get('/index.js',function(req,res){
res.sendFile(path.join(__dirname+'/public/index.js'));
});
app.get('/userMove', function(req, res) {
let themove = sharedLib.getTheMove(req.query.move);
res.send({
computerMove: themove
})
});
app.get("/reset", function(req, res) {
let didItWork = sharedLib.resetGame(1);
res.send({
resetIt: didItWork
})
});
app.use(express.static('public'));
app.listen(process.env.PORT || 3000);
Подводя итог, я просто хочу иметь возможность запускать это приложение, чтобы несколько пользователей могли использовать его в в то же время, и чтобы у каждого пользователя был «уникальный» сеанс.