【问题标题】:How the log from SRCDS can be received in node.js如何在 node.js 中接收来自 SRCDS 的日志
【发布时间】:2017-12-28 03:46:39
【问题描述】:

我的问题与问题类似:How to recieve log from SRCDS in node.js,但问题是上面链接中表示的解决方案并不能解决我的问题。

所以,我有运行 cs:go 实例和运行 NodeJS 的 SRCDS(源专用服务器)。

为了向 NodeJS 发送日志,我在 SRCDS 的控制台中添加:

log on
logaddress_add myAddress:myPort

在这种情况下,myAddress:myPort127.0.0.1:8006

为了使用 NodeJS 捕获发送的日志,我使用了以下代码:

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({
  address: 'localhost',
  port: 8006,
  exclusive: true
});

问题是这种方法与 CS (Counter-Strike) 1.6 完美配合。

即使我尝试从本地服务器(不是 SRCDS)发送日志(通过键入 log onlogaddress_add myAddress:myPort(在本例中为 127.0.0.1:8006))它也不起作用。

【问题讨论】:

  • 你能描述一下it does not work吗?什么都没有发生?你能确认 srcds 实际上是在发送日志数据包吗?您是否在路由器后面(或者,srcds 与您的服务器在同一子网上)?你的输出是什么样的?
  • 一般情况下,什么都不会发生。我无法确认来自 srcds 的日志是否已发送(我正在考虑但我不知道如何测试它),但我可以确认它们已写入。我和我的服务器在同一个子网中,所以我不认为我在我的路由器后面。输出示例:L 11/18/2015 - 00:01:17:“Chet”已连接,地址“”L 11/18/2015 - 00:01:17:“Chet ”从团队 切换到 L 11/18/2015 - 00:01:17:世界触发“Game_Commencing” L 11/18/2015 - 00:01:17:“Chet”进入游戏
  • 您可以使用wireshark 来确认他们正在发送吗?过滤器udp && udp.port == 8006 应该足够了。
  • @Qix 将您的评论标记为有用的,抱歉反应迟了

标签: node.js


【解决方案1】:

所以,我的同事解决了这个问题。

似乎 cs:go 服务器没有将数据发送到 localhost。因此,必须更改服务器绑定。

因此,必须添加公共服务器 (server.addMembership('224.0.0.114'))。

那么从服务器转发的日志必须设置为下面指定的 IP 地址:
"logaddress_add 224.0.0.144:1234"

这是一个正确的代码:

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(1234, function() {
  server.addMembership('224.0.0.114');
});

它与本地服务器完美配合。所以,不需要启动 SRCDS。

Qix,感谢您的帮助。

D.

【讨论】:

    猜你喜欢
    • 2013-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-11
    • 1970-01-01
    • 2018-11-25
    • 2019-07-31
    • 1970-01-01
    相关资源
    最近更新 更多