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

时间:2013-11-12 02:27:33

标签: node.js api

我有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)
});

没有结果。有人可以帮忙吗?

提前致谢

2 个答案:

答案 0 :(得分:3)

[解决]

在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);  

答案 1 :(得分:0)

我最后编写了一个小库来执行此操作(srcds-log-receiver),它验证数据包格式,提取日期并允许您使用sv_logsecret函数对连接进行少量身份验证,因为UDP数据包很容易伪造。

我还写了a parser来将这些日志行转换为有用的对象。