gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 02:03:38 26 4
gpt4 key购买 nike

我有一个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”。

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

最佳答案

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

关于javascript - Node.JS 服务器未发送数据(或客户端未接收),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45065297/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com