2017-08-11 15 views
0

私は、スクリプトファイルの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」というコメントがクライアントコンソールに表示されないため、クライアントが受信しないことがわかります。問題のソケットレシーバが正常に動作し、問題のコメントを出力すると、残りのソケットレシーバは正常に動作するはずです。

このように、「サーバーから受信した既定値」というコメントをクライアントコンソールに正常に印刷できるようにするために、私は特に援助を求めています。

+1

'defaultScore'クライアント関数のヌルチェックの前に' data'を記録しようとしましたか? – Joe

+0

@Joeありがとうございますが、あなたが何を意味するのかを明確にする必要があります。あなたが何を示唆しているのか分かりません。 – jmine83

+0

申し訳ありませんが、この関数内から 'data'引数をログに記録しようとしました:' socket.on( 'defaultScores'、function(data){...}); ' – Joe

答えて

0

私は自分でそれを把握することができました。ありがたいことに私は記事から

nodejs socket receive data from one port and make available on another port

が、私は変更は私が後のコードの2行目から、必要なことを推測することができました...次の以前の記事に出くわした「削除成功!」コメントはこれに変更されました...

ioMain.emit('defaultScores', gameScores); 

これで問題は解決しました。

関連する問題