Socket.IO излучать не отправляя - PullRequest
0 голосов
/ 03 марта 2019

Я сейчас создаю игру, используя Socket.IO и Javascript.Изначально я хотел сделать многопользовательскую игру в реальном времени, однако столкнулся с проблемой очень быстро.В конце концов я сдался и перешел к пошаговой игре, но проблема все равно не исчезла.

Проблема в том, что сервер (app.js) не получает излучение от клиента (game.js).Я пытался воссоздать проект, console.log и поиск Google безрезультатно.

App.js

require('./Database');

var express = require('express');
var app = express();
var serv = require('http').Server(app);

app.get('/', function(req, res) {
    res.sendFile(__dirname + '/client/index.html');
});
app.use('/client', express.static(__dirname + '/client'));
serv.listen(process.env.PORT || 2000);
console.log("Server started.");

var SOCKET_LIST = {};


var io = require('socket.io')(serv, {});
io.sockets.on('connection', function(socket) {
    socket.id = Math.random();
    SOCKET_LIST[socket.id] = socket;

    socket.on('signIn', function(data) {  // {username,password}

        Database.isValidPassword(data, function(res) {
            if (!res)
                return socket.emit('signInResponse', { success: false });
            Database.getPlayerProgress(data.username, function (progress) {


                socket.emit('signInResponse', {
                    success: true, username: data.username,
                    progress: progress
                });
            })
        });
    });
    socket.on('signUp', function(data) {

        Database.isUsernameTaken(data, function(res) {
            if (res) {
                socket.emit('signUpResponse', { success: false });
            } else {
                Database.addUser(data, function() {
                    socket.emit('signUpResponse', { success: true });
                });
            }
        });
    });


    socket.on('disconnect', function() {
        delete SOCKET_LIST[socket.id];

    });
    socket.on("findMatch", function(data) {
        console.log('test');  // ******* Not working ********

    });

});

Game.js

var socket = io("127.0.0.1:2000");

function findMatch(data) {
    socket.emit("findMatch", { socket: socket });
}

FindMatch() вызывается из лобби кнопки «Найти соответствие».Он подключен к слушателю onclick.

Спасибо.Я был бы признателен за любую помощь.

Редактировать: Излучение подключения, входа, регистрации и отключения ДЕЙСТВИТЕЛЬНО работают только пользовательские, которые я добавляю позже (например, findMatch), не работают

...