如何在node.js中从SRCDS接收日志

在控制台上有srcds(阀门专用服务器)添加logaddress_add 0.0.0.0:25001这个打开发送日志到远程服务器

试图通过这种方式来捕捉日志

var net = require('net'); var server = net.createServer(function(c) { c.on('end', function() { console.log('server disconnected'); }); c.pipe(c); }); server.listen(25001); 

然后

 var net = require('net'); var client = net.connect({port: 25001}); client.on('data', function(data) { console.log(data.toString()); client.end(); }); client.on('end', function() { console.log('client disconnected'); }); 

然后

 var s = dgram.createSocket('udp4'); s.bind(25001, function(data) { console.log(data) }); 

没有结果可以帮助吗?

thx提前

[解决了]

在SRCDS服务器上

 logaddress_add 0.0.0.0:8006 //for local ip 

在app.js

 var dgram = require('dgram'), server = dgram.createSocket('udp4'); server.on('message', function (message, rinfo) { var msg = message.toString('ascii').slice(5,-1); console.log(msg); }); server.on('listening', function () { var address = server.address(); console.log('UDP Server listening ' + address.address + ':' + address.port); }); server.bind(8006); 

我写了一个小库来做这个( srcds-log-receiver ),它validation了数据包的格式,提取出date,并允许你使用sv_logsecret函数对连接进行less量的validation,因为UDP数据包很容易被伪造。

我也写了一个parsing器来将这些日志行转换为有用的对象。