私は、スクリプトファイルのserver.jsとclient.jsのペアを持っています。ここでNode.jsポート間でパケットを送信
は、これらの2つのファイルのすべてのコードを除いて、正常に動作している...ここで
var express = require('express');
var appMain = express(); var appReset = express();
var serverMain = require('http').Server(appMain);
var serverReset = require('http').Server(appReset);
var fs = require('fs');
appMain.get('/', function(req, res) {
res.sendFile(__dirname + '/client/index.html');
});
appMain.use('/client', express.static(__dirname + '/client'));
appReset.get('/', function(req, res) {
res.sendFile(__dirname + '/client/reset.html');
});
appReset.use('/client', express.static(__dirname + '/client'));
serverMain.listen(3000); console.log('Start mainServer');
serverReset.listen(2000); console.log('Start resetServer');
var gameScores;
fs.readFile('client/data/scores.txt', 'utf8', function(error, data) {
if (error) {
console.log('Read Error!');
gameScores = null;
}
else {
console.log('Read Success!');
gameScores = data;
}
});
var ioMain = require('socket.io') (serverMain,{});
ioMain.sockets.on('connection', function(socket) {
console.log('mainSocket Connected');
socket.emit('gameScores', gameScores);
socket.on('gameScores', function(data) {
gameScores = data;
fs.writeFile('client/data/scores.txt', JSON.stringify(data), function(error) {
if (error)
console.log('Write Error!');
else
console.log('Write Success!');
});
socket.emit('gameScores', gameScores);
});
});
var ioReset = require('socket.io') (serverReset,{});
ioReset.sockets.on('connection', function(socket) {
console.log('resetSocket Connected');
socket.on('resetScores', function(data) {
fs.unlink('client/data/scores.txt', function(error) {
if (error) {
console.log('Delete Error!');
socket.emit('clearScores', false);
}
else {
console.log('Delete Success!');
gameScores = null;
socket.emit('defaultScores', gameScores);
socket.emit('clearScores', true);
}
});
});
});
がclient.jsファイルです...
socket.on('gameScores', function(data) {
if (data !== null) {
if (JSON.parse(localStorage.reload))
localStorage.reload = false;
else
localStorage.gameScores = JSON.stringify(data);
localStorage.emptyScores = false;
}
else {
localStorage.emptyScores = true;
localStorage.reload = false;
}
});
socket.on('defaultScores', function(data) {
if (data == null) {
console.log('Received Default from Server');
localStorage.emptyScores = true;
Game.main.gameScores('load');
}
});
server.jsファイルですserver.jsファイルの "Delete Success!"というコメントが表示されます。 3行のコードが続きます。これら3本のライン、動作していない特定の行である次
socket.emit('defaultScores', gameScores);
「defaultScores」ラベルのclient.jsファイル内の対応するソケットの受信機にデータパケットを送信すべきコードの上の行が、クライアントはそれを受け取ることはありません。 「Received Default from Server」というコメントがクライアントコンソールに表示されないため、クライアントが受信しないことがわかります。問題のソケットレシーバが正常に動作し、問題のコメントを出力すると、残りのソケットレシーバは正常に動作するはずです。
このように、「サーバーから受信した既定値」というコメントをクライアントコンソールに正常に印刷できるようにするために、私は特に援助を求めています。
'defaultScore'クライアント関数のヌルチェックの前に' data'を記録しようとしましたか? – Joe
@Joeありがとうございますが、あなたが何を意味するのかを明確にする必要があります。あなたが何を示唆しているのか分かりません。 – jmine83
申し訳ありませんが、この関数内から 'data'引数をログに記録しようとしました:' socket.on( 'defaultScores'、function(data){...}); ' – Joe