Node.JS服务器不发送数据(或客户端未接收)

时间:2017-07-12 18:39:45

标签: javascript node.js express socket.io

我有一个node.js服务器(使用socket.io和express)。我把所有东西都运转了,但是我把我的代码变成了多个组织文件。

现在,客户端可以发送到服务器(并且服务器可以接收数据),但是服务器没有将数据发送回客户端(客户端没有收到发送的数据)。

这是我的服务器(app.js):

var variables = require('./variables');
var functions = require('./functions');
var connection = require('./connections');
var heartbeat = require('./heartbeat');

var mongoClient = require('mongodb').MongoClient;
var config = JSON.parse(process.env.APP_CONFIG);
var mongoPassword = '1029384756';

variables.app.use('/client', variables.express.static(__dirname + '/client'));

mongoClient.connect('mongodb://' + config.mongo.user + ":" + mongoPassword + "@" + config.mongo.hostString, function (err, db) {
    if (err) throw err;

    variables.db = db;

    // Routing
    variables.app.get('/', function(request, response) {
        response.sendFile(variables.path.join(__dirname, '/client/index.html'));
    });

    variables.server.listen(process.env.PORT);

    heartbeat.start();

    connection.startListening();
});

我的变量.js:

var http = require('http');
var express = require('express');
var socketIO = require('socket.io');
var path = require('path');
var app = express();
var server = http.Server(app);
var io = socketIO(server);
var db = null;
var onlinePlayers = {};


module.exports = {
    http,
    express,
    socketIO,
    path,
    app,
    server,
    io,
    db,
    onlinePlayers
}

我的connections.js(我的io.on所在的位置)

const variables = require('./variables');

module.exports = {
    startListening: function () {
    variables.io.on('connection', function(socket) {
        socket.emit('message', "Testing sending from server.");

        socket.on('message', function(message) {
            console.log(message);
            socket.emit('message', message);
        });

    --Snipped more variables.io.on (ignore {} mistakes, syntax is correct in code)
}

我的客户(再次,非常剪断)

var socket = io();
var page = 0;

console.log("Loaded");

window.onload = function() {
    setPage(0);
}

socket.on('message', function(message) {
    console.log(message);
});

将会发生什么:

页面将加载。客户端将打印“已加载”,然后将打印“测试从服务器发送”。 (因为在connection.js中连接时socket.emit)

如果我进入客户端/网页的控制台并输入:

socket.emit('message', "Hello");

我的服务器将打印出“Hello”(应该如此),但是我的客户端不会从服务器获取socket.emit以打印“Hello”。

我完全难过了。有什么帮助吗?

1 个答案:

答案 0 :(得分:0)

我明白了。在我的代码中的某个时刻(在这种情况下它是在setPage(0)函数内部),具有socket.ons的index.js文件的标记被删除。这意味着服务器正在发送数据,而客户端正在获取数据,但是没有脚本告诉它如何处理这些数据。