我需要在socket中传递参数,我使用方法emit
服务器端:
var http=require('http');
var numero_giocatori=0;
var express = require('express');
var app = express();
var net = require('net');
var client = new net.Socket();
var vettore_clienti=[];
var chatServer = net.createServer();
chatServer.on('connection', function(client) {
numero_giocatori=numero_giocatori+1;
vettore_clienti.push(client);
if(numero_giocatori===2){
console.log("IScritto "+numero_giocatori);
for(var i=0;i<vettore_clienti.length;i++){
vettore_clienti[i].emit('vettore_clienti',vettore_clienti);
}
}
});
chatServer.listen(8000,'127.0.0.1');
但我不知道如何阅读我首先使用emit
方法传递的值
客户端:
var net = require('net');
var client = new net.Socket();
client.connect(8000, '127.0.0.1', function() {
});
client.on('data', function(data) {
console.log(data);
});
答案 0 :(得分:1)
答案 1 :(得分:0)
Node的TCP套接字是通用的(另一端不一定是Node程序),也没有规定消息格式的任何标准。换句话说:您可以自由地为消息创建自己的编码。
或者您可以简单地使用JSON(如果您不关心与更适合您的特定用例的编码相比所产生的开销):
var http=require('http');
var numero_giocatori=0;
var express = require('express');
var app = express();
var net = require('net');
var client = new net.Socket();
var vettore_clienti=[];
var chatServer = net.createServer();
function sendMessage(client, messageType) {
var message = {type: messageType, data: [].slice.call(arguments, 2)};
client.write(JSON.stringify(message)); // Sending a string implicitly converts it into a buffer using utf-8
}
chatServer.on('connection', function(client) {
console.log('Got connection', client);
numero_giocatori=numero_giocatori+1;
vettore_clienti.push(client);
if(numero_giocatori===2){
console.log("IScritto "+numero_giocatori);
for(var i=0;i<vettore_clienti.length;i++){
sendMessage(vettore_clienti[i], 'welcome', "You are client number", i+1, 'of', vettore_clienti.length);
}
}
});
chatServer.listen(8000,'127.0.0.1');
var net = require('net');
var client = new net.Socket();
client.connect(8000, '127.0.0.1', function() {
console.log('Connected');
});
client.on('data', function(data) {
var message = JSON.parse(data.toString()); // calling toString() with no arguments assumes the buffer is in utf-8
var messageType = message.type;
var data = message.data;
console.log.apply(console, data);
});
请注意,通过这种方式,您只能发送实际可以用JSON表示的内容。这会排除函数和NaN
或Infinity
等值。发送一组完整的函数和流的客户端,就像你在示例代码中尝试的一样,因此不起作用。