2017-02-13 5 views
0

nodejsのソケットサーバー/クライアントに関するソースコードは以下のとおりです。私は上記のコードを実行するとき、サーバはクライアントに戻る(クライアントからである)データを送信しますnodejsのパイプソケットサーバーから入力/出力を分離する方法は?

const net = require('net'); 

net.createServer((socket)=>{ 
    socket.pipe(socket); 
    socket.on('data', (data)=>{ 
    console.log('receive data ', data.toString()); 
    socket.write('this is server') 

    }); 
}).listen(3000); 

console.log("Chat server running at port 5000\n"); 

let client = new net.Socket(); 
client.setEncoding('utf8'); 
client.connect(3000, '127.0.0.1', function() { 
    console.log('Connected'); 
    client.write('Hello, server! Love, Client.'); 
}); 

client.on('data', function(data) { 
    console.log('Received: ' + data); 
}); 

。私はこれがsocket.pipe(socket);によってケースされていることを知っています。私は、そのコードを維持したいと以下のようにクライアント側で入力/出力データを分離する方法を探しています:

client.on('data', function(data) { 
    if(the data is sent from client){ 
     ... 
    } else { 
     //this is the data generated from server 
    } 
}); 

誰でもnodejsクライアント側でそれを行う方法を知っていますか?

答えて

0

実際には、送信するメッセージや聞く内容に応じて、クライアントとサーバーを区別することができるため、クライアントとサーバーのデータを分離することができます。

クライアントから受信したメッセージは、クライアントがそのメッセージをリッスンしている場合に受信したメッセージです。クライアントが送信するメッセージは、サーバーがメッセージを受信して​​いる場合に受信したメッセージです。以下

ここでは、サーバがクライアントによって受信されるメッセージ( 'userConnected')を発光さsocket.io

var app = require('express')(); 
var http = require('http').Server(app); 
var io = require('socket.io')(http); 


app.get('/', function(req, res){ 
     res.send('<h1>SocketChat Server</h1>'); 
     }); 


http.listen(3000, function(){ 
      console.log('Listening on *:3000'); 
      }); 


io.on('connection', function(clientSocket){ 
    /* Here server is listening to client 'connectUser' message so here data is sent from client*/ 
    clientSocket.on('connectUser', function(clientNickname, groupName) { 
         var message = "User " + clientNickname + " was connected." + clientSocket; 

          console.log(message); 
clientSocket.emit('userConnected'); 
}); 
}); 

/*ためのコードです。 */

上記から、クライアントとサーバーのメッセージを区別する方法がわかります。

+0

私が持っている問題はnet.socketです。つまり、メッセージとして 'data'を使用しています。私はそのメッセージの名前を変更することはできません。 –

関連する問題