如何在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器来将这些日志行转换为有用的对象。