我在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 :(得分:0)
实际上,您可以从客户端和服务器中分离出数据,具体取决于您发出的消息或您收听的内容,从中可以区分客户端和服务器。
您从服务器发出的消息是您在客户端收到的消息,如果客户端正在侦听该消息,则客户端发出的消息是服务器在服务器正在侦听消息时收到的消息。
以下是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');
});
});
/ *此处服务器正在发送客户端将接收的消息(&#39; userConnected&#39;)。 * /
从上面你可以看到如何区分客户端和服务器消息。