【问题标题】:How to receive log from SRCDS in node.js如何在 node.js 中从 SRCDS 接收日志
【发布时间】:2013-11-24 01:08:57
【问题描述】:

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

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

提前致谢

【问题讨论】:

    标签: node.js api


    【解决方案1】:

    [已解决]

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

    【讨论】:

    • 感谢兄弟的解决方案.....就像一个魅力
    【解决方案2】:

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

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

    【讨论】:

    • 我正在使用您的上述库并收到此日志:得到一些完全无法解析的 gargbase:{ isValid:false,packetType:83,invalidReason:4 }。在哪里可以找到 invalidReason 代码的原因短语?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多