我有一个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”。
我完全难过了。有什么帮助吗?
答案 0 :(得分:0)
我明白了。在我的代码中的某个时刻(在这种情况下它是在setPage(0)函数内部),具有socket.ons的index.js文件的标记被删除。这意味着服务器正在发送数据,而客户端正在获取数据,但是没有脚本告诉它如何处理这些数据。